#include<stdio.h>
void main()
{
int a,b,c,d;
a=b=c=d=1;
a=++b>1 || ++c>1 && ++d>1;
printf("%d%d%d%d",a ,b ,c ,d);
}
gcc编译器中上述代码的答案是 1211 ,任何人都可以解释为什么会这样吗?
答案 0 :(得分:3)
此处a=++b>1 || ++c>1 && ++d>1;
此行将作为
a=((++b>1) || ((++c>1) && (++d>1))); according to precedence.
||
操作的相关性是从左到右,因此(++b>1)
将首先执行,然后b
增加到2
并且||
的左侧}操作将变为true
,因此右侧将不会执行,c,d
保持不变。