首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么C允许忽略块周围的支撑?

为什么C允许忽略块周围的支撑?
EN

Stack Overflow用户
提问于 2015-09-14 18:03:39
回答 7查看 992关注 0票数 9

我们中的大多数人可能都遇到了错误,当您在“if”中添加另一条语句时,注意到不管分支的条件如何,它都会打印,但是迟早会发现'if‘条件周围的大括号丢失了。

示例:

代码语言:javascript
运行
复制
if (condition) {
    statement;
}

与之相比:

代码语言:javascript
运行
复制
if (condition)
    statement;

请注意,我不想讨论什么编码标准更好,因为我们都有自己的观点,这在很大程度上取决于上下文。相反,我会感兴趣的是,从编程语言的角度来看,为什么不严格执行这些优点。它能使语法更简单吗?编译器实现?

让它成为可选的,而不是严格执行它有什么好处?标准是怎么说的?

EN

Stack Overflow用户

发布于 2015-09-14 20:03:14

你有点误会了。这些大括号是,既不是可选的,也不是强制性的。没有决定是否允许或强制使用它们。大括号是,而不是if语句的部分(或任何类似的构造)。它们属于条件后面的语句。简单语句不会有它们,但是复合语句会(根据定义,复合语句是括在括号中的语句列表)。

这种情况以及编译器如何处理它直接来自于这个语法定义(实际上,这个定义并不是特定于C的,我可以想到的那个时代的大多数其他语言,Algol,Pascal,不管它们使用的是关键字而不是大括号,也是如此)。基本上,任何没有特定结束关键字(如ifend ififfi)的语言都必须这样处理。

当您在if或任何其他类似的构造中包含单个语句的大括号时,不使用允许大括号的可选if形式。您只是碰巧为它提供了一个复合语句(因此,用大括号括起来),其中只包含一个语句,这是完全合法的。但是对于编译器来说是一样的,它处理它没有任何不同。

实际上,但这是一个品味问题,当然,许多程序员更喜欢忽略它们,因为它减少了杂乱。

票数 4
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32571075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档