我很确定之前已经问过这个问题,但我真的无法在stackoverflow上找到它。对我来说,答案似乎相对简单,但我需要确定。如果你能将这个问题重新定向到你所知道的任何类似的问题,我已经很高兴了,这个问题已经得到了解答(有了很好的答案!)。这是:
在下面的代码中
if (first_boolean && second_boolean && ... && last_boolean)
{
//some code...
}
如果第一个布尔值为false,编译器是否会检查任何其他布尔值,如果其中所有运算符都是AND运算符? (因为,如你所知,如果它们之间的所有都是AND运算符,则if语句中的整个布尔值将为false)。我假设编译器事先检查所有逻辑运算符(不评估布尔语句)以确保如果第一个或第二个布尔值为假,整个语句将为假?
另外,如果编译器确实进行了这样的优化,它是否从左到右检查整个布尔表达式?
提前感谢。