This question already has answers here:
Is short-circuiting logical operators mandated? And evaluation order?
(7个答案)
6年前关闭。
可以说我有以下代码:
第一个问题,在这种情况下谁决定使用短路评估?编译器还是C标准?
第二个问题,首先评估哪个?
(7个答案)
6年前关闭。
可以说我有以下代码:
if (a&&b)
{
...
}
第一个问题,在这种情况下谁决定使用短路评估?编译器还是C标准?
第二个问题,首先评估哪个?
a
或b
。顺序由谁决定,是否可以更改代码中的顺序? 最佳答案
该标准要求进行短路评估。
总是先a
。您不能在程序中更改它。
参考:6.5.13逻辑AND运算符,第4段:
与按位二进制&
运算符不同,&&
运算符保证从左到右的求值;如果对第二个操作数求值,则在第一个和第二个操作数的求值之间有一个序列点。如果第一个操作数比较等于0,则不评估第二个操作数。