【发布时间】:2016-02-15 02:44:42
【问题描述】:
我知道此代码不能按“预期”工作。快速看一下这段代码,我们认为返回值应该是1,但是在执行时它返回返回3。
// incorrect
variable = 1;
switch (variable)
{
case 1, 2:
return 1;
case 3, 4:
return 2;
default:
return 3;
}
并且有一些正确的选项可以做到这一点:
// correct 1
variable = 1;
switch (variable)
{
case 1: case 2:
return 1;
case 3: case 4:
return 2;
default:
return 3;
}
或
// correct 2
switch (variable)
{
case 1:
case 2:
return 1;
case 3:
case 4:
return 2;
default:
return 3;
}
Multiple Cases in Switch: 部分回答了这个问题
我想知道为什么不正确的形式编译时没有错误甚至警告(至少在 Borland C++ 编译器中)。
编译器对该代码的理解是什么?
【问题讨论】:
标签: c++