红岩孙明霞人物分析:多谢大家

来源:百度文库 编辑:高考问答 时间:2024/05/09 04:35:21
4以下的程序段输出的结果是
int x=1,y=0;
switch(x)
{case 1:
switch(y)
{case0:printf("x=1 y=0\n");break;
case1:printf("y=1\n");break;)
case'2',printf("x=2\n");}
答案是x=1 y=0 x=2怎么得出来的呢???可以解释一下吗???

重新把你的程序整理了一下:
int x=1,y=0;
switch(x)
{
case 1: /* 标志一 */
{
switch(y)
{
case0: printf("x=1 y=0\n");
break; /* 标志二 */

case1: printf("y=1\n");
break;
}
} /* 标志三 */
case'2',printf("x=2\n"); /* 标志四 */
}

程序都是按先后顺序来执行的,
你在这里使用了嵌套的switch
在第一个switch(x)中
由于x == 1;则
switch(1)
就会执行"标志一"中的语句.
即执行switch(y)中的语句,
这时由于y ==0 ;
则会打印出x=1 y=0,然后break;跳出到"标志三"这个位置
由于在标志三这没有遇到break;语句,程序将继续往下执行,打印x=2.

这就是你最后的结果.

总之,switch中的case语句只有在遇到break;之后,才会跳出.

我也不知道 没看懂