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;
}
你首先定义了k=2,所以先case 2:printf("%d\n",k++);输出一个2.但是你没有break输出k后k++所以k变成3,在运行case3的语句 直达4结束。所以输出234
在switch语句中,因为前面没有break,所以输出2行,(2 和 3 )
最后再输出一行 4
弱弱的问下楼上的大神们,printf("%d",k);这句话是在switch语句外面的,最后输出结果不是就4吗?怎么会是2 3 4?
不知道你的意图是什么,应该是case 2、case 4语句后少了一个break