我们中的大多数人可能都遇到了错误,当您在“if”中添加另一条语句时,注意到不管分支的条件如何,它都会打印,但是迟早会发现'if‘条件周围的大括号丢失了。
示例:
if (condition) {
    statement;
}与之相比:
if (condition)
    statement;请注意,我不想讨论什么编码标准更好,因为我们都有自己的观点,这在很大程度上取决于上下文。相反,我会感兴趣的是,从编程语言的角度来看,为什么不严格执行这些优点。它能使语法更简单吗?编译器实现?
让它成为可选的,而不是严格执行它有什么好处?标准是怎么说的?
发布于 2015-09-14 20:03:14
你有点误会了。这些大括号是,既不是可选的,也不是强制性的。没有决定是否允许或强制使用它们。大括号是,而不是if语句的部分(或任何类似的构造)。它们属于条件后面的语句。简单语句不会有它们,但是复合语句会(根据定义,复合语句是括在括号中的语句列表)。
这种情况以及编译器如何处理它直接来自于这个语法定义(实际上,这个定义并不是特定于C的,我可以想到的那个时代的大多数其他语言,Algol,Pascal,不管它们使用的是关键字而不是大括号,也是如此)。基本上,任何没有特定结束关键字(如if和end if或if和fi)的语言都必须这样处理。
当您在if或任何其他类似的构造中包含单个语句的大括号时,不使用允许大括号的可选if形式。您只是碰巧为它提供了一个复合语句(因此,用大括号括起来),其中只包含一个语句,这是完全合法的。但是对于编译器来说是一样的,它处理它没有任何不同。
实际上,但这是一个品味问题,当然,许多程序员更喜欢忽略它们,因为它减少了杂乱。
https://stackoverflow.com/questions/32571075
复制相似问题