我对以下switch语句有疑问:
#include <iostream>
using namespace std;
int main()
{
int x = 1;
switch (x)
{
case 1:
cout << "x is 1" << endl;
//break;
case 2:
cout << "x is 2" << endl;
//break;
default:
cout << "x is something else" << endl;
}
}
使用break它会按预期工作,但当我注释掉断点时输出为:
x是1
x是2
x是别的东西
我希望输出为
x是1
x是别的东西
因为x == 1并且执行了案例1。没有中断,它还会检查不应该执行的情况2,因为x!= 2.最后执行默认值。
为什么在这种情况下执行案例2?
答案 0 :(得分:1)
case
运营商的 switch
个标签不会&#34;检查&#34;什么,他们基本上是goto
标签。人们甚至可以写:
const int count = 12;
char dest[count], src[count] = "abracadabra", *from = src, *to = dest;
int n = 1 + (count - 1) / 8;
switch (count % 8) {
case 0: do { *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
} while (--n > 0);
}
printf("%s\n", dest);