作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道下面的代码如何返回 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);
第二个代码与第一个代码有何不同?
最佳答案
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?
关于c - for 循环 C 中的 OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49214641/
我是一名优秀的程序员,十分优秀!