我不明白为什么它打印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;
}
字符串
1条答案
按热度按时间6yt4nkrj1#
对于
x == 2
,switch(x%2 == 0)
计算为switch(1)
,然后在case 1:
处继续执行,这将2加到a
上,并且由于加法之后没有break
语句,因此执行福尔斯进入情况4,将3加到a
上,之后在switch
语句的右括号处继续执行,六是印刷。