100) { i = 100; -6ren">
gpt4 book ai didi

c++ - 空的 "else"子句在 C++ 中有什么意义吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:54 25 4
gpt4 key购买 nike

以下2个代码在功能上有什么区别吗?如果没有,是否有首选样式?

int main()
{
int i=11;

if (i > 100)
{
i = 100;
}
else if (i < 0)
{
i = 0;
}

cout << i << endl;
}

对比

int main()
{
int i=11;

if (i > 100)
{
i = 100;
}
else if (i < 0)
{
i = 0;
}
else
{
}

cout << i << endl;
}

换句话说,我的问题是,如果我不想让它做任何事情,那么包含 else 有什么意义吗?

最佳答案

意义

问题:

...does an empty else clause have any significance?

if { ... } else {} 的上下文中答案是。编译器可能会优化你的 else出去。除非您放置实际语句(assertprint、错误处理),否则可执行文件实际上是相同的。


好处

问题:

What are the benefits of an empty else clause in an else if construct?

答案在 this Stack Overflow post 上进行了详细讨论。 .请参阅 MISRA 出版物 MISRA C:2012, 15.7(所有 if… else if 构造应以 else 语句终止)。
适用于 if { ... } else if { ... } else {}构建, if { ... } else {}构造。


风格

else { /* no statement */ }else statement 好得多.它确实可以防止悬空 else闭包( else 后面没有 {} )是非常危险的,因为它们可能会误导读者对 else 的理解。实际上适用于,并且容易出现维护错误。

你会发现编程风格1比一个房间里的工程师还要多。我可以建议:

int main() {
int i = 11;

if (i > 100) {
i = 100;
} else if (i < 0) {
i = 0;
}

cout << i << endl;
}

1 每个人,加上一个共识。

关于c++ - 空的 "else"子句在 C++ 中有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35388241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com