C 语言:if() 没有 else():使用大括号失败

2024-02-22

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

#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。如果需要多个语句,则必须将它们合并为一个compound陈述。

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

执行两者pause功能和low不管什么input返回。换行符的放置位置不会影响 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不合适。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 语言:if() 没有 else():使用大括号失败 的相关文章

  • 一种链接到类、方法,尤其是 C# 注释中的特定代码行的方法

    我想使用代码中指向目标的链接来构建某种文档 目标可以是Class or a Method或特定的代码行 指向特定的代码行是最重要的 我想到了VS2010的扩展或者特定的评论标签 有什么办法可以建立这种类型的链接吗 xml注释 沙堡可能就是你
  • 预加载整个模型以估计 Tensorflow Serving 的内存消耗

    当执行预测时 Tensorflow Serving 延迟初始化模型 DAG 中的节点 这使得很难估计保存整个模型所需的内存 RAM 是否有一种标准方法可以强制 Tensorflow Serving 将模型完全初始化 加载到内存中 您可以使用
  • 从 WatchOS 捕获 Apple Watch 的型号标识符

    似乎没有任何记录的官方方法可以从手表应用程序获取 Apple Watch 模型 但有一篇文章显示了特殊用途sysctlbyname 如何确定Apple Watch型号 https stackoverflow com questions 49
  • 替换大字符串中的多个字符串的最快方法

    我正在寻找替换大 1mb 字符串的多个 500 子字符串的最快方法 无论我尝试过什么 String Replace 似乎都是最快的方法 我只关心最快的方式 不是代码的可读性 可维护性等 我不在乎是否需要使用不安全的代码或预处理原始字符串 每
  • C++ 局部变量销毁顺序

    C 11 中是否存在局部变量释放的定义顺序 更简洁地说 同一作用域中两个局部变量的析构函数的副作用将以什么顺序变得可见 e g struct X X do something int main X x1 X x2 return 0 Is x
  • main() 是用户定义函数吗? [复制]

    这个问题在这里已经有答案了 程序员does定义内部发生的事情main 毕竟 那么 它应该被视为用户定义的函数吗 C 标准没有用户定义函数的概念 相反 它有一个概念库函数 main 不是库函数 但是 该标准还对其签名提出了一些要求 并且不得重
  • 不同平面中不同幅值的两条线段之间最近的两个 3D 点

    比方说AB1 AB2 CD1 CD2 AB1 AB2 and CD1 CD23D 点构成线段 所说的线段是不在同一平面 AP是一个点 线段AB1 AB2 BP是一个点 线段CD1 CD2 Point1 and Point2彼此最接近 两条线
  • 带和不带指针声明符的 C++11 自动声明

    不同类型有什么区别bar1 and bar2 int foo 10 auto bar1 foo auto bar2 foo If both bar1 and bar2 are int 编写指针声明符是否有意义 在里面bar2宣言 这些声明完
  • CMake include_directories 和 add_subdirectories 之间的区别?

    我正在学习 CMake 来构建 C 代码 并努力解决以下概念 在我的根级目录中 我有一些 cpp 文件和 CMakeLists txt 它们在 gen cpp 目录中成功生成了一些 thrift 代码 我的根级别 CMakeLists tx
  • 如何重命名 MacOS/X 程序中的程序名称菜单标签?

    我有一个在 MacOS X 下运行的基于 Qt 的 GUI 程序 我希望能够更改该程序的第一个菜单标题的标签 即此屏幕截图中用红色圈出的标签 有没有一种编程方法可以做到这一点 假设不存在基于 Qt 的解决方案 则 Objective C 本
  • 网页上的富文本编辑器

    我正在尝试在我的网页中添加一个富文本编辑器 用户可以在其中撰写评论并格式化他们所写的内容 类似于我们在此网站上撰写帖子的编辑器 谁能指出我关于此的正确方向 任何可以帮助我构建这样一个组件的教程 我还想要一个免费的产品 忘记之前提到 类似的东
  • Microsoft Build Tools 2013 缺少 v120 目录

    我们已经安装了 Microsoft Build Tools 2013 从http www microsoft com en us download details aspx id 40760 http www microsoft com e
  • 运行 SQL Server 报告服务时如何解决“远程服务器返回错误:(401) 未经授权”?

    我正在用这个code http www codeproject com Articles 25994 Creating a Proxy to Download PDF Reports from SRS从 SSRS 创建和下载 PDF 报告
  • 如何使用 SonarQube 的 C# 插件设置 FxCop 安装路径

    我正在尝试使用 SonarQube C 插件分析 NET C 项目 从C Plugin 3 0开始 即使sonar project properties中的 sonar fxcop mode skip FxCop也会自动执行 所以我将FxC
  • 使用 C# winforms 与 Windows 中的其他桌面应用程序交互

    我想知道是否可以与使用我的程序的其他程序进行交互 例如 单击另一个程序上的按钮等 我不确定这是否可能 但如果可能的话 有人可以提供一些 C 示例代码 Thanks 您可以创建消息并将其发送到其他进程 为此 您必须在 C 代码中使用 P In
  • Action 的通用约束未按预期工作

    我无法理解为什么以下代码片段没有给我错误 public void SomeMethod
  • C# 固定长度的字符串对象

    我有一堂课 我想使用固定大小的字符串 固定大小的原因是该类 序列化 为文本文件 具有固定长度的值 我想避免为每个值编写一个保护子句 而是让类处理它 所以我有大约 30 个属性 看起来像这样 public String CompanyNumb
  • 着色器可以旋转形状以面向相机吗?

    我制作了一个球出现在 3D 空间中的场景 三角球耗费大量资源 所以我使用带有球纹理的二维表面 四边形 来完成此操作 但现在我需要在每次相机移动时调整形状的方向 我使用位置变换和 LookAt 方法来完成此操作 问题是我可以优化这个吗 如果可
  • 在 Angular 6 和 ASP.net 中启用 CORS

    我正在尝试从 Angular 6 应用程序向发送电子邮件的 API 发送 POST 请求 我用邮递员测试了该请求并且它有效 但是当我在 Angular 应用程序中执行 POST 请求时 我的控制台中出现错误 我在 Angular 应用程序中
  • 使用 CRTP 模式时继承中的不明确方法

    我正在定义一个DoubleWrapper类继承自两个 CRTP 基类 Ratioable and Divable 两者都定义operator 具有不同的签名 T operator double const scalar const retu

随机推荐