(以下内容与微控制器编程有关)
我想在 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]
}
来自第
6.5.13 章第 4 段,C99
标准,关于逻辑 AND 运算符 [ &&
]
&&&运算符保证从左到右的评估
和
如果第一个操作数的比较等于 0,则不计算第二个操作数。
因此,您的第二个代码与第一个代码一样高效,并且具有更好的可读性。