任何人都可以在c中解释这段代码的答案

时间:2017-02-01 17:22:57

标签: c printf operator-precedence

#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 ,任何人都可以解释为什么会这样吗?

1 个答案:

答案 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保持不变。