条件三元算子中的模 在C++中,有人写了如下: player = (player % 2) ? 1 : 2;
根据我所读的,如果偏执词中的条件为真,变量“player”将计算为1,但这似乎不是一个可以为真或假的条件。如果条件三元算子中的模 在C++中,有人写了如下: player = (player % 2) ? 1 : 2;,c++,C++,根据我所读的,如果偏执词中的条件为真,变量“player”将计算为1,但这似乎不是一个可以为真或假的条件。如果player是int或隐式转换为int,然后,对于偶数或奇数,模运算将分别返回0或1 从那里,int隐式转换为bool,这样0计算为false,所有非零值(包括负值)计算为true 示例 从 player = 2; 我们可以一步一步地遵循三元表达式 player = (player % 2) ? 1 : 2; player = (2 % 2) ? 1 : 2; player = 0 ?
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
,反之亦然。如果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
,反之亦然。隐式转换。这是一个糟糕的代码,但不幸的是相当普遍。条件应写为播放器%2==1
。隐式转换。这是一个糟糕的代码,但不幸的是相当普遍。条件应该写为播放器%2==1
。