OR运算符在for循环C中

时间:2018-03-10 22:26:38

标签: c loops

我不知道以下代码如何返回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);

第二个代码与第一个代码有什么不同?

1 个答案:

答案 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?