为什么这个C程序可以打印6?

3df52oht  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(117)

我不明白为什么它打印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;
}

字符串

6yt4nkrj

6yt4nkrj1#

对于x == 2switch(x%2 == 0)计算为switch(1),然后在case 1:处继续执行,这将2加到a上,并且由于加法之后没有break语句,因此执行福尔斯进入情况4,将3加到a上,之后在switch语句的右括号处继续执行,六是印刷。

相关问题