为什么使用Switch语句的功能不需要返回
Why function with switch statement doesn't need return
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屏幕截图确认可以运行
它不是编译器错误。丢失的返回不需要编译器的诊断(但是编译器可能会发出一个),并且会导致不确定的行为 - 任何事情都可能发生。
相关文章:
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 为什么output_editor Concept不需要output_e迭代器标记
- 在除法中不需要四舍五入
- 与C代码相比,为什么C++代码不需要"#define _POSIX_C_SOURCE 200809L"?
- 将值从另一个数组写入数组,不包括不需要的值 C++
- C++ 写入路径名中包含不需要的空字符的文件
- 是否有必要获取锁并在不需要唤醒线程时通知condition_variable?
- 使用 assimp 加载模型 - 不需要提升?
- 为什么转换函数声明不需要至少一个定义类型说明符
- 返回不需要的值的二叉搜索程序
- 当我不需要数据库中的所有值时,如何部分初始化 c++ 对象?
- C++:用户输入会产生不需要的行为
- 如何在不需要LIBCD.lib的情况下在Visual Studio 6中编译C项目
- AVR-GCC:(看似)简单功能中不需要的序言/尾声
- 为什么虚拟继承即使不涉及虚拟功能也需要 vtable?
- 为什么此C 功能定义不需要卷曲括号
- 为什么使用Switch语句的功能不需要返回
- 为什么我应该使用SetTimer功能,而不是多媒体定时器服务的应用程序不需要高分辨率定时
- 不需要两个功能+过载吗?