繁体   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