为什么用switch语句函数不需要返回

时间:2012-10-22 14:38:10

标签: c++ visual-studio-2010 return switch-statement

enum MyEnum
{
    A,
    B,
}

MyEnum Foo(int i)
{
    MyEnum mx;
    switch(i)
    {
    case 1:
        {
            mx = A;
        }break;
    case 2:
        {
            mx = B;
        }break;
    default:
        {
            throw std::exception("ERROR");
        }
    }
}

int Main()
{
    MyEnum myEnum = Foo(1);
    return 0;
}

在Foo()中没有'return',这段代码可以在VS2010中编译和运行。是编译器错误吗?

VS2010 screenshot确认可以运行

1 个答案:

答案 0 :(得分:8)

这不是编译器错误。丢失的返回不需要编译器的诊断(但编译器可能会发出一个),并导致未定义的行为 - 任何事情都可能发生。