为什么使用Switch语句的功能不需要返回

Why function with switch statement doesn't need return

本文关键字:功能 不需要 返回 语句 Switch 为什么      更新时间:2023-10-16
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()中没有"返回"的情况下,可以在VS2010中编译此代码并运行。是编译器错误吗?

VS2010屏幕截图确认可以运行

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