标签: c operator-precedence
main() { int a,b=0,c=1,d=1; a=++b&&++c||++d; printf("%d %d %d",b,c,d); //1 2 1 b=0,c=1,d=1; a=b&&++c||++d; printf("%d %d %d",b,c,d); //0 1 2 }
为什么第二个printf给出答案0 1 2而不是0 2 1?
答案 0 :(得分:5)
&&是short-circuiting.
&&
在
a=b&&++c||++d;
++c
b
0将不会被评估。因此,c为1而不是2。
0
c
1
2