This question already has answers here:
Is short-circuiting logical operators mandated? And evaluation order?
                                
                                    (7个答案)
                                
                        
                                6年前关闭。
            
                    
可以说我有以下代码:

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


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

第二个问题,首先评估哪个? ab。顺序由谁决定,是否可以更改代码中的顺序?

最佳答案

该标准要求进行短路评估。
总是先a。您不能在程序中更改它。


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


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

07-24 09:51
查看更多