请教C语言问题,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/29 10:56:41
这个程序是什么意思?说的通俗一点好吗?我看着有点糊涂,麻烦解释一下,先谢谢了!!

#include<stdio.h>
void main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;
}
printf("\na=%d,b=%d",a,b);
}
为什么 case 3:a++;b++; 这步不执行了呢?

首先判断X=1,执行case 1:

case 1下面是一个钦套的case,这时要判断y,这样就会执行y=0,case 0;所以a++,a=1;出来子case,外面的case 1:执行完了,但是因为他并没有break,所以,会继续执行case 2:的内容,而不判断是不是满足条件,所以a++,b++;,a=2,b=1;

所以这个程序最后是:a=2,b=1

因为a++,b++后面有一个break所以他并米有执行,而是中断了case

#include<stdio.h>
void main()
{
int x=1,y=0,a=0,b=0;

switch(x)
{
case 1: //因为x等于0,所以执行该case语句
switch(y)
{
case 0:
a++; //因为y等于0,所以执行该case语句,a等于1
break; //break代表跳出switch(y)语句
case 1:
b++;
break;
}
//没有break,向下执行
case 2:
a++; // a等于2
b++; // b等于1
break; // break代表跳出switch(x)语句
case 3:
a++;
b++;
}

printf("\na=%d,b=%d",a,b); //输出a=2,b=1
}

输出a=2,b=1