在IF句子中链接IF句子与链接条件

时间:2015-01-29 14:54:14

标签: c

(以下内容与微控制器编程有关)

我想测试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]
}

1 个答案:

答案 0 :(得分:7)

关于逻辑AND运算符[C99]

的第6.5.13节,第4段&&标准
  &&&运营商保证从左到右的评估

  

如果第一个操作数比较等于0,则不评估第二个操作数。

因此,您的第二个代码与第一个代码一样高效,并且具有更好的可读性。