空的"else"子句在C++中是否有任何意义?

Dav*_*vid 3 c++ if-statement

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

int main()
{
    int i=11;

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

    cout << i << endl;
}
Run Code Online (Sandbox Code Playgroud)

int main()
{
    int i=11;

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

    cout << i << endl;
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我的问题是,else如果我不想让它做任何事情,是否有任何意义?

Swi*_*ect 6

意义

对于这个问题:

......一个空else条款有什么意义吗?

if { ... } else {}答案的背景下是没有.编译器可能会优化你的else出局.除非您输入实际语句(assert,print错误处理),否则可执行文件几乎完全相同.


优点

对于这个问题:

构造中空else子句有什么好处else if

这个Stack Overflow帖子详细讨论了答案.见MISRA C出版物.
它适用于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;
}
Run Code Online (Sandbox Code Playgroud)

每个人 1个,加上一个人达成共识.

  • 坦率地说,当我看到一个空的`else`子句时,生成效率较低的代码可能是我最不关心的问题.检测空的复合语句是一件微不足道的事情.空的"别人"只会让人类的读者感到困惑.那将是我的主要关注点. (2认同)