Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可以说我有以下代码:
if (a&&b) { ... }
第一个问题,谁决定在这种情况下使用短路评估?编译器还是 C 标准?
第二个问题,先评估哪一个?a或b。顺序由谁决定,有没有办法改变我的代码中的顺序?
a
b
标准要求进行短路评估。
它永远是a第一位的。你不能在你的程序中改变它。
参考:6.5.13 逻辑与运算符,第 4 段:
与按位二元&运算符不同,运算&&符保证从左到右的求值;如果计算第二个操作数,则在第一个和第二个操作数的计算之间存在一个序列点。如果第一个操作数比较等于 0,则不计算第二个操作数。
&
&&