(以下内容与微控制器编程有关)
我想测试IF句中的几个条件
if(variable) { // fastest check
if(register) { // a bit slower
if(read_peripheral) { // very slow check
// [do something]
}
}
}
很明显,我想从最快的检查开始,然后继续前进到较慢的检查,如果上述情况属实,可能会避免检查它们。
既然我需要检查很多条件,我想知道以下内容是否相同,或者在做出决定之前是否会评估所有条件?
if(variable && register && read_peripheral) {
// [do something]
}
答案 0 :(得分:7)
关于逻辑AND运算符[C99
]
&&
标准
&&&运营商保证从左到右的评估
和
如果第一个操作数比较等于0,则不评估第二个操作数。
因此,您的第二个代码与第一个代码一样高效,并且具有更好的可读性。