链接 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]
}

最佳答案

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

the && operator guarantees left-to-right evaluation

If the first operand compares equal to 0, the second operand is not evaluated.

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

关于链接 IF 句子与 IF 句子中的链接条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28217658/

相关文章:

c - 使用 Apache API,为什么要逐行输入字符串?任何原因?

c - 从 txt.file 读取数据并打印出其二维数组内容

c - 我怎样才能跳到更高的半内核

c - 反向功能未按预期工作

c++ - 如何在 Linux 应用程序上使用 C++ 中的终端输入中断循环/进程

c - C 中的全局是否隐式易变?

c - 是否可以使Doxygen扩展枚举初始化程序?

c - 正则表达式获取 C 语言的完整名称

c - c 程序的意外行为,试图解决 E6-2 K&R

c - C缓冲区溢出的解释