开关:不区分大小写的中断

问题描述 投票:1回答:1

我有以下switchbreak,但没有case

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
1个回答
2
投票

第一个break被忽略。

[在switch(c)处,运行时跳至case 'a'作为c=='a'。之前的所有内容都将被忽略。

这就是case 'b'在不打印'a'的情况下工作的原因,这就是为什么switch块中的变量定义不被接受的原因:

int n=0;
switch (n)
{
    int k=n;
case 0:
    return k; // UB
}
© www.soinside.com 2019 - 2024. All rights reserved.