-5

可以说我有以下代码:

if (a&&b)
{
...
}

第一个问题,谁决定在这种情况下使用短路评估?编译器还是 C 标准?

第二个问题,先评估哪一个?ab。顺序由谁决定,有没有办法改变我的代码中的顺序?

4

1 回答 1

7
  1. 标准要求进行短路评估。

  2. 它永远是a第一位的。你不能在你的程序中改变它。

参考:6.5.13 逻辑与运算符,第 4 段:

与按位二元&运算符不同,运算&&符保证从左到右的求值;如果计算第二个操作数,则在第一个和第二个操作数的计算之间存在一个序列点。如果第一个操作数比较等于 0,则不计算第二个操作数。

于 2013-07-22T21:43:26.967 回答