空的"否则"子句在C ++中有什么意义?

时间:2016-02-14 04:07:27

标签: c++ if-statement

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

int main()
{
    int i=11;

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

    cout << i << endl;
}

else

换句话说,我的问题是,如果我不希望它做任何事情,包括&gt;是否有任何意义?

1 个答案:

答案 0 :(得分:5)

意义

问题:

  

...空else子句有什么意义吗?

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

优势

问题:

  

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 每个人,加上一个人达成共识。