以下两个代码在功能上有什么区别吗?如果没有,是否有首选风格?
int main()
{
int i=11;
if (i > 100)
{
i = 100;
}
else if (i < 0)
{
i = 0;
}
else
{
}
cout << i << endl;
}
与
else
换句话说,我的问题是,如果我不希望它做任何事情,包括>
是否有任何意义?
答案 0 :(得分:5)
问题:
...空
else
子句有什么意义吗?
在if { ... } else {}
的上下文中,答案是否。编译器可能会优化您的else
。除非你把实际的语句(assert
,print
,错误处理),否则可执行文件几乎完全相同。
问题:
else
构造中的空else if
子句有什么好处?
答案将在this Stack Overflow post详细讨论。见MISRA C出版物
它适用于if { ... } else if { ... } else {}
构造,不是 if { ... } else {}
构造。
else { /* no statement */ }
比else statement
好得多。{1}}。它确实可以防止悬空else
封闭(else
后面没有{}
),这些封闭是非常危险的,因为它们可能会误导读者else
实际适用的内容,并且很容易维护错误。
您会发现比在一个房间里有工程师更多的编程风格 1 。我可以建议:
int main() {
int i = 11;
if (i > 100) {
i = 100;
} else if (i < 0) {
i = 0;
}
cout << i << endl;
}
1 每个人,加上一个人达成共识。