首页 > 解决方案 > switch : 无案例中断

问题描述

我有以下没有switcha :breakcase

char c = 'a';
switch(c) {
    break;
    case 'a' : cout << 'a' << endl;
    break;
    case 'b' : cout << 'b' << endl;
    break;
    default : break;
}

为什么此代码段打印a?只遇到第一个break语句后,开关不应该中断吗?

标签: c++switch-statement

解决方案


第一个break被忽略。

switch(c),运行时跳转到case 'a'as c=='a'。之前的一切都被忽略了。

这就是为什么case 'b'不打印就可以工作的原因'a',这就是为什么变量定义在switch块中不受欢迎的原因:

int n=0;
switch (n)
{
    int k=n;
case 0:
    return k; // UB
}

推荐阅读