我不明白为什么它打印6而不打印-8。如果我理解正确的话,x % 2等于所以0我必须寻找这种情况,0对吗?
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[]) {
int x = 2;
int a = 1;
switch (x % 2 == 0) {
case 3:
a=a+3;
case 0:
a=a-4;
case 6:
a=a-5;
break;
case 7:
a=a-2;
case 1:
a=a+2;
case 4:
a=a+3;
break;
case 9:
a=a+4;
case 8:
a=a-2;
case 5:
a=a+3;
break;
case 2:
a=a+1;
default:
a=a+4;
break;
}
printf("%d\n", a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对于x == 2,switch(x%2 == 0)计算结果为switch(1),然后在 处继续执行case 1:,将 2 加到a,并且由于加法后没有跟任何break语句,因此执行会转到情况 4,将 3 加到a,然后在switch语句的右大括号处继续执行,并打印 6。