此boolean
语句中的if
个表达式的顺序是否已修复?
if(boolean_expression_1 || boolean_expression_2) {
}
boolean_expression_1
之前始终评估boolean_expression_2
吗?评估顺序是C
中的标准吗?
答案 0 :(得分:5)
是。它得到了保证。它被称为"short circuit"评估。
从C11草案, 6.5.14逻辑OR运算符:
与按位|不同运算符, ||运营商保证 从左到右的评估;如果评估第二个操作数,则有 第一个和第二个的评估之间的序列点 操作数。如果第一个操作数比较不等于0,则第二个操作数 操作数未被评估。
(强调我的)。