我们大多数人可能遇到了在“if”中添加另一个语句的错误,并注意到它不管分支的条件如何打印,只是迟早会发现在“if”条件下的大括号失踪.
例:
if (condition) { statement; }
相比:
if (condition) statement;
请注意,我不想讨论什么编码标准更好,因为我们都有我们的意见,它非常依赖于上下文.相反,我会对编程语言的优点感兴趣,从这些优点,为什么决定不被严格执行.它是否使一个更简单的语法?编译器实现?
留下它的优点是什么,而不是严格执行它?标准说了什么?
解决方法
C标准说一个if(表达式)必须跟着一个语句.它不要求声明是复合语句.
在“C的精神”(见C理由文件)中,其中一个是:
Trust the programmer.
另一方面,MISRA-C具有if语句和循环语句必须是复合语句的必要规则.
一些编码样式允许单个语句,如果只有当该语句放在与if相同的行时.例如:
if (condition) statement;
请注意,C和C不仅是if中的{}是可选的语言.例如在Java中,它也是可选的,但在Perl中是必需的.