关于C++ Switch 语句的解析

int main(int argc, char* argv[])
{
    int a=0;
    switch(a){
        case 0:
            printf("a\n");
        case 1:
            printf("b\n");
        case 2:
            printf("c\n");
        case 3:
            printf("d\n");
            break;
    }
    return 0;
}

通过如上代码会发现打印出了abc。

int main(int argc, char* argv[])
{
    int a=2;
    switch(a){
        case 0:
            printf("a\n");
            break;
        case 1:
            printf("b\n");
            break;
        case 2:
            printf("c\n");
            break;
        case 3:
            printf("d\n");
            break;
    }
    return 0;
}

通过如上代码会发现只打印了c。

第一个反汇编:

3.png

会发现没有jmp跳。

第二个反汇编:

2.png


关于C++ Switch 语句的解析


本站如无特别说明即为原创,转而告知:(http://iwonmo.com/archives/650.html)

标签: c++, switch

添加新评论