回答
号
&&
和||
具有短路评价,即,一旦该结果明确知道(false
为&&
和true
为||
)评价停止。它总是严格从左到右。
在这种情况下,编译器甚至可能会选择完全消除if
语句,因为编译时的条件已知为false
,因此代码之后无法访问。
非常感谢您的帮助 – harut9
准确地说,只有内置的逻辑表达式具有短路语义。当运算符被重载时,表达式是一个正常的函数调用。 –
因为C++有short-circuit evaluation的条件,所以不会调用该函数,因为第一个false
无论如何都会使整个表达式为false。
如果你改变顺序,所以你先把函数调用(即myfunc() && false && true
),那么函数将被调用。尽管如此,表达式的结果仍然是false
,无论myfunc
返回什么结果。
如果你在你的答案中写下订单,那么编译器是不是会优化整个if语句和其范围内的所有内容?或者在那里有异常的情况下调用该函数? – Chiel
@Chiel如果函数是来自另一个翻译单元的外部函数,那么编译器无法知道它做了什么,或者它有什么副作用,所以函数调用不能被优化。它可以优化的是它除了呼叫外没有其他任何操作,而忽略返回的值。 –
不,myfunc()
将不会被调用,因为第一个false
,编译器将停在那里。这就是所谓的短路评估。
- 1. 这个If语句如何工作?
- 2. If语句如何在Javascript中工作
- 3. 如何使if语句正常工作?
- 4. 如何使这个IF语句工作
- 5. 多mysqli_query语句IF语句不工作
- 6. 非工作if语句
- 7. 的“if”语句不工作
- 8. if语句,不工作
- 9. IF语句不工作
- 10. 玉if语句不工作
- 11. Android if if语句不工作inItemClickListener
- 12. IF语句不执行,但ELSE IF语句正常工作
- 13. 如何if语句
- 14. 如何if语句
- 15. 如何简化If语句的语法工作?
- 16. 如果语句嵌套if if语句嵌套if语句,
- 17. 增量操作符在if语句中如何工作?
- 18. if(!found)语句无法正常工作
- 19. 基本if语句不工作 - Python的
- 20. SelectedItem.Text是否在if语句中工作?
- 21. Java IF语句无法正常工作
- 22. Js if语句无法正常工作
- 23. setcookie()不工作在if语句
- 24. 函数与if语句不工作?
- 25. 定义if语句不工作的值
- 26. jQuery的不能让if语句工作
- 27. “if”语句无法正常工作?
- 28. if语句子流程python不工作
- 29. jQuery的if语句工作在Firefox
- 30. 有麻烦if语句在VBA工作
总之:不,它不会被调用。 –
否。if条件将在第一个错误时停止,而不会测试其他两个条件。 – Drakes
伙计们。答案在_ANSWER部分_ –