我们中的大多数人可能都遇到了错误,当您在“if”中添加另一条语句时,注意到不管分支的条件如何,它都会打印,但是迟早会发现'if‘条件周围的大括号丢失了。
示例:
if (condition) {
    statement;
}与之相比:
if (condition)
    statement;请注意,我不想讨论什么编码标准更好,因为我们都有自己的观点,这在很大程度上取决于上下文。相反,我会感兴趣的是,从编程语言的角度来看,为什么不严格执行这些优点。它能使语法更简单吗?编译器实现?
让它成为可选的,而不是严格执行它有什么好处?标准是怎么说的?
发布于 2015-09-14 18:09:15
C标准规定if (expression)后面必须有一条语句。它不要求语句是复合语句。
在“C的精神”(见C的基本原理文件)中,一个短语是:
相信程序员。
另一方面,MISRA对if有一个必需的规则,并循环该语句必须是一个复合语句。
有些编码样式仅在语句与if放在同一行时才允许为if提供一条语句。例如:
if (condition) statement;请注意,C和C++不仅是使{}在if中可选的语言。例如,在Java中,它也是可选的,但在Perl中它是必需的。
发布于 2015-09-14 18:20:49
因为:
if (condition)后面跟着一个statement,然后让递归处理所有事情,就更容易、更健壮了。就我个人而言,对于任何能力模糊的程序员来说,对这个构造的不信任很大程度上是没有价值的;我从来没有遇到过这样的"bug“,我忘记了如何编写C++,只是因为我选择了省略一个大括号对。如果你遇到它,我建议你把它当作一个提示,更多地关注你正在做的事情,而不是用“技巧”和“风格指南”来掩盖它。
发布于 2015-09-14 18:09:24
有时,不必编写大括号会使代码更具可读性:
if (x < 0) throw std::invalid_argument("meh");
if (a != b) return 0;
if (i == k) continue;理论上,您可以设计一种编程语言来要求除了控制流语句之外的大括号,但是这种安全性可能会被额外的语言复杂性所压倒。
https://stackoverflow.com/questions/32571075
复制相似问题