[英]Modulo in conditional ternary operator
在C ++中,有人編寫了以下內容:
player = (player % 2) ? 1 : 2;
根據我的閱讀,如果括號中的條件為true,則變量'player'的值將為1,但這似乎不是一個可以為true或false的條件。
如果player
是一個int
或已隱式轉換為int
,則在這種情況下,模運算將分別為偶數或奇數返回0
或1
。
從那里, int
隱式轉換為bool
,使得0
評估為false
,所有非零值(包括負值)評估為true
。
例
從...開始
player = 2;
我們可以逐步遵循三元表達式
player = (player % 2) ? 1 : 2;
player = (2 % 2) ? 1 : 2;
player = 0 ? 1 : 2; // 0 evaluates to false
player = 2;
但是,我認為這種邏輯是有缺陷的,它們可能意味着
player = (player % 2) ? 2 : 1;
實際上,這將以交替的方式“切換”玩家,這意味着當player
最初為1
,三元之后將被分配為2
,反之亦然。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.