use*_*918 3 c operator-precedence operator-keyword
以下程序似乎没有按预期工作.'&&'具有比'||'更高的优先级,因此实际输出令人困惑.有谁能解释o/p吗?
#include <stdio.h>
int main(int argc, char *argv[])
{
int x;
int y;
int z;
x = y = z = 1;
x++ || ++y && z++;
printf("%d %d %d\n", x, y, z);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
实际输出为:2 1 1
TIA.
优先顺序和评价顺序无关.
&&具有更高的优先级而不仅仅||意味着表达式被解释为
x++ || (++y && z++);
Run Code Online (Sandbox Code Playgroud)
因此,首先计算左侧操作数||(因为它后面有一个序列点,因此需要),并且因为它计算非零值,所以(++y && z++)从不评估右侧操作数.
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |