在 C++ 中,有人写了以下内容:
player = (player % 2) ? 1 : 2;
Run Code Online (Sandbox Code Playgroud)
从我读过的内容来看,如果括号内的条件为真,变量“player”将评估为 1,但这似乎不是一个可以为真或为假的条件。
如果player是int或 隐式转换为int,则模运算将分别返回0或1在这种情况下为偶数或奇数。
从那里,int有一个隐式转换到bool这样,0评估为false并且所有非零值(包括负值)评估为true。
示例
开始于
player = 2;
Run Code Online (Sandbox Code Playgroud)
我们可以按照三元表达式一步一步来
player = (player % 2) ? 1 : 2;
player = (2 % 2) ? 1 : 2;
player = 0 ? 1 : 2; // 0 evaluates to false
player = 2;
Run Code Online (Sandbox Code Playgroud)
然而,我认为这个逻辑是有缺陷的,他们的意思可能是
player = (player % 2) ? 2 : 1;
Run Code Online (Sandbox Code Playgroud)
这确实会以交替的方式“切换”玩家,这意味着什么时候player最初是1,在三元之后,它将被分配2,反之亦然。
| 归档时间: |
|
| 查看次数: |
993 次 |
| 最近记录: |