c语言的一个实例。

#include "stdio.h"
main()
{
int x=10,y=5;
switch(x)
{
case 1:x++;
default:x+=y;
case 2:y--;
case 3:x--;
}
printf("x=%d y=%d\n",x,y);

这个程序为什么等于x=14,y=4。
我想知道case 1 到底是不是 x=1时就应该x++的意思?

由于x=10,在switch里面没有case 10所以从default开始执行,由于每个case后面都没有break,所以从default往下依次执行,分别有x+=y;y--;x--;这样就得到了x=14,y=4;
case 1是在x=1的时候从case 1开始执行x++;并以此往下执行,知道遇到break语句或switch结束。追问

是不是就是没有break就会一直执行下去?有了break就会执行到最后语句或者到switch结束?

追答

是的,就是这样

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-24
你好,就是x = 1时执行case 1;
int x=10,y=5;
switch(x)//因为x = 10,没有被case独立标识,所以执行default
{
case 1:x++;
default:x+=y; //x = x + y = 10 + 5 = 15;因为没有break;顺序执行case 2;
case 2:y--; //y = y - 1 = 5 - 1 = 4; 没有break;
case 3:x--; //x = x - 1 = 15 - 1 = 14;
}

所以就是x = 14, y = 4;追问

是不是就是没有break就会一直执行下去?

追答

是的。

本回答被提问者和网友采纳
第2个回答  2015-05-23
先执行case 当要判断的值与所有的Case值都不匹配时,程序就从Default开始执行

所以执行顺序 x++ x=11; y-- y=4; x-- x=10; x+=y x=10+4;
switch(x)中的x就是到执行case x停止的意思吧
第3个回答  2015-05-23
每个case 后面没加break case 1:x++后x=11 default:x+=y;后 x=16 case 2:y--;后 y=4

case 3:x--; 后x=15
相似回答