我今天看到一段大小写切换代码,看到它的工作原理有点惊讶。代码是:
switch (blah)
{
case a:
break;
case b:
break;
case c:
case d:
case e:
{
/* code here */
}
break;
default :
return;
}
令我惊讶的是,在变量为 c
的情况下,路径进入了“code here”部分。我同意大小写切换的 c
部分末尾没有中断,但我本以为它会通过 default
代替。当您到达 case blah:
行时,它不会检查您的当前值是否与特定情况相匹配然后才让您进入特定段吗?否则,有什么意义?
最佳答案
这称为 case fall-through,是一种理想的行为。它允许您在案例之间共享代码。
如何使用 case fall-through 行为的示例:
switch(blah)
{
case a:
function1();
case b:
function2();
case c:
function3();
break;
default:
break;
}
如果在blah == a
时输入开关,那么会执行function1()
、function2()
、function3()
.
如果您不希望出现这种行为,可以通过包含 break
语句来选择退出。
switch(blah)
{
case a:
function1();
break;
case b:
function2();
break;
case c:
function3();
break;
default:
break;
}
switch 语句的工作方式是(或多或少)执行 goto
以跳转到您的 case 标签,并从该点继续运行。当执行遇到 break
时,它会离开 switch block 。
关于c++ - 大小写切换是这样工作的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8146106/