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

  • 本文关键字:链接 句子 IF 条件 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]
}
来自第

6.5.13 章第 4 段,C99标准,关于逻辑 AND 运算符 [ && ]

&

&&运算符保证从左到右的评估

如果第一个操作数的比较等于 0,则不计算第二个操作数。

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