簡體   English   中英

條件三元運算符的模

[英]Modulo in conditional ternary operator

在C ++中,有人編寫了以下內容:

player = (player % 2) ? 1 : 2;

根據我的閱讀,如果括號中的條件為true,則變量'player'的值將為1,但這似乎不是一個可以為true或false的條件。

如果player是一個int或已隱式轉換為int ,則在這種情況下,模運算將分別為偶數或奇數返回01

從那里, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM