C语言: if() with no else(): using braces fails

标签 c if-statement braces

我对 IF() 表达式后是否需要大括号感到困惑。 当使用 IF(){...}ELSE{...} 时,我习惯在 IF 和 ELSE block 周围使用大括号。 但是当我不使用 ELSE block 时,它可以在没有大括号的情况下工作,并且在有大括号的情况下失败:
工作原理: IF()...
失败:IF(){...}
下面的示例,这是针对微 Controller 的

#include "simpletools.h"
int main()
{
  while(1)
  {
    print("button = %d\n", input(3));
    if(input(3) == 1)                      //works if no braces
      high(14);
      pause(50);
      low(14);
      pause(50);
  } //while
}   // main

最佳答案

if 之后有一条语句。如果您需要多个语句,则必须将它们组合成一个复合语句。

if (input(3) == 1)
    high(14);
pause(50);
low(14);
pause(50);

无论input返回什么,都会执行pause函数和low。换行符的放置位置不会影响 C 解析代码的方式。您需要大括号将 4 个函数调用组合成一个复合语句:

if (input(3) == 1) {
    high(14);
    pause(50);
    low(14);
    pause(50);
}

else 子句的缺失或存在不会改变任何内容,除了

if (input(3) == 1)
    high(14);
pause(50);
else ...

会导致错误,因为 else 未连接到任何 if 语句; if 以单个语句 high(14) 结束,而 pause(50) 完全是一个单独的语句,因此 else 不合适。

关于C语言: if() with no else(): using braces fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21441560/

相关文章:

c - 避免堆栈溢出(C 中的迷宫生成器)

c - 在C语言中解析原始套接字编程中的IP地址

使用内置 SDL2 库从 c 项目创建 .exe

php - 检查sql数据库中是否存在email,然后输出(关于running if inside if)

c - 当我按下键盘上的键时如何防止重复的字符

php - 排除 if 子句中的多个值

c - 找到硬编码号码

java - Eclipse 格式化。在为 block 打开大括号之前删除新行

c++ - while 循环中的 if/else 格式

npm - 当 npm 审计不执行任何操作时,如何修复 React-scripts v2.1.5 的 npm 包大括号问题?