我不知道以下代码如何返回10.我预计x> 2 ||(y%2)部分意味着x应该大于2或大于y%2。
int x, y = 1;
for (x = 10; x > 2 || (y % 2); x--) {
y = y + 1;
}
printf ("%d\n", y);
当我将其更改为以下内容时,我得到了预期的输出(11):
int x, y = 1;
for (x = 10; x > 2 || x > (y % 2); x--) {
y = y + 1;
}
printf ("%d\n", y);
第二个代码与第一个代码有什么不同?
答案 0 :(得分:0)
x > 2 || (y % 2)
首先测试x > 2
,如果这是假的,则测试(y % 2)
(y
是奇数)。
||
运算符不能并且不能应用于>
运算符,||
运算只执行一次,而不是两次。这是在这里展示的经典Python错误的C变体:How do I test multiple variables against a value?,尝试在计算机语言中使用自然语言失败。
(顺便说一下,不是运算符优先级,运算符优先级将介于该表达式和x > (2 || (y % 2))
之间,仍然不是您要查找的内容)
还相关:C++ Most efficient way to compare a variable to multiple values?