<分区>
Possible Duplicate:
why “++x || ++y && ++z” calculate “++x” firstly ? however,Operator “&&” is higher than “||”
如果查看 C 的优先级表,您会发现 && 的优先级高于 ||。
但是看看下面的代码:
a=b=c=1;
++a || ++b && ++c;
printf("%d %d %d\n",a,b,c);
它打印出“2 1 1”,这意味着首先评估“++a”,一旦程序在那里看到一个 TRUE,它就会停在那里,因为 || 的另一边是什么不重要。
但由于 && 的优先级高于 ||,难道不应该先计算“++b &&++c”,然后将结果插入“++a || result”吗? (在这种情况下,程序将打印“1 2 2”)。