可能的重复:
如果您查看 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”)。
试着用括号想象一下:
++a || ++b && ++c;
equals
(++a) || (++b && ++c);
从左到右评估。
如果 && 和 ||将具有相同的优先级,看起来像
(++a || ++b) && (++c);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)