省略else关键字

时间:2011-10-11 10:09:34

标签: c++

这两种方法之间有什么真正的区别吗?

方法1:

bool IsNumOverFive(int num)
{
    if(num > 5)
    {
        return true;
    }
    else
    {
        return false;
    }
}

方法2:

bool IsNumOverFive(int num)
{
    if(num > 5)
    {
        return true;
    }

    return false;
}

4 个答案:

答案 0 :(得分:13)

就计算机而言,两个版本之间没有区别。

鉴于两者都是正确的,重要的是阅读代码的人会发现它很容易阅读。

我碰巧更喜欢第三个版本:

bool IsNumOverFive(int num)
{
    return (num > 5);
}

其他人可能有不同的偏好。

答案 1 :(得分:5)

虽然方法一在较复杂的例子中可能更容易阅读,但在功能上却没有。

答案 2 :(得分:4)

行为没有区别,最有趣的是,编译器会生成相同的代码:

g++ -S -Wall case1.cpp 
g++ -S -Wall case2.cpp

diff -U case1.s case2.s

编译器会发现,如果你有其他问题,那么你将覆盖所有案例。否则,它会生成警告:

warning: control reaches end of non-void function [-Wreturn-type]

如果您启用了警告。

答案 3 :(得分:1)

在你的例子中没有区别。

更好的版本之一是:

bool IsNumOverFive(int num)
 {
     return (num > 5 ? true: false) ;
 }