如果您查看C的优先级表,您会发现&&的优先级高于||。
但是请看以下代码:
它打印出"2 1 1",意味着"++a"首先被评估,一旦程序在那里看到一个TRUE,它就停止了,因为||另一边的内容不重要。
但是由于&&比||优先级更高,所以"++b && ++c"应该首先被评估,然后结果插入到"++a || result"中吗?(在这种情况下,程序将打印"1 2 2")。
但是请看以下代码:
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")。