C语言中case的问题 为什么答案是2,3,4

2024年11月15日 20:50
有5个网友回答
网友(1):

case 语句下如果没有break; 则会从第一个进入的case顺序执行下面的case。比如如果k初值为2,则会执行case 2下的语句,因为没有break,继续执行case 3下的语句。

#include 
int main()
{
    int k=2;
    switch(k)
    {
    case 1:
        printf("%d\n",k++);
        break;
    case 2:
        printf("%d\n",k++); //先输出k = 2, 再执行了k++
    case 3:
        printf("%d\n",k++); //同上
        break;
    case 4:
        printf("%d\n",k++);
    default :
        printf("FULL!\n");
    }
    printf("%d",k); //k自增了两次,其值为4
    return 0;
}

网友(2):

你首先定义了k=2,所以先case 2:printf("%d\n",k++);输出一个2.但是你没有break输出k后k++所以k变成3,在运行case3的语句 直达4结束。所以输出234

网友(3):

在switch语句中,因为前面没有break,所以输出2行,(2 和 3 )
最后再输出一行 4

网友(4):

弱弱的问下楼上的大神们,printf("%d",k);这句话是在switch语句外面的,最后输出结果不是就4吗?怎么会是2 3 4?

网友(5):

不知道你的意图是什么,应该是case 2、case 4语句后少了一个break