C语言一个小程序问题
#include<stdio.h>main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}p...
#include <stdio.h>
main()
{
int x=1,a=0,b=0;
switch (x)
{
case 0:b++;
case 1:a++;
case 2:a++;b++;}
printf("a=%d,b=%d\n",a,b);
}
这个运行了,结果是a=2,b=1;
我搞不懂为啥?我以为的结果是:a=1,b=0
请高手帮忙解释一下 展开
main()
{
int x=1,a=0,b=0;
switch (x)
{
case 0:b++;
case 1:a++;
case 2:a++;b++;}
printf("a=%d,b=%d\n",a,b);
}
这个运行了,结果是a=2,b=1;
我搞不懂为啥?我以为的结果是:a=1,b=0
请高手帮忙解释一下 展开
5个回答
展开全部
仔细看教材,switch语句里面,满足一个case条件之后开始执行,如果没有遇到break语句,会继续执行下一个条件的语句。
例如你的程序,如果x值为1,那么执行case 1之后的a++语句之后,还会执行case 2之后的a++、b++两个语句。
例如你的程序,如果x值为1,那么执行case 1之后的a++语句之后,还会执行case 2之后的a++、b++两个语句。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
switch语句的执行流程:当表达式的值和某个case后面的语句相同时执行这个case后面的语句(并接着执行下面的语句,如果不希望接着执行下面的语句要用break语句跳出)。
所以楼主你知道,case 1:a++;这个语句先执行,后面没有break语句,所以紧跟着还要执行case 2:a++;b++;语句;
楼主现在知道为什么结果是a=2,b=1,了吧
所以楼主你知道,case 1:a++;这个语句先执行,后面没有break语句,所以紧跟着还要执行case 2:a++;b++;语句;
楼主现在知道为什么结果是a=2,b=1,了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
++(--)在前(如++i),先运算再取值;
++(--)在后(如i++),先取值再运算;
switch (x)
{
case 0:b++;break;
case 1:a++;break;
case 2:a++;b++;break;}
++(--)在后(如i++),先取值再运算;
switch (x)
{
case 0:b++;break;
case 1:a++;break;
case 2:a++;b++;break;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
case 1:a++;(没有break)
case 2:a++;b++;}
若有则为 a=1,b=0
若无 则继续执行下一条语句
case 2:a++;b++;}
若有则为 a=1,b=0
若无 则继续执行下一条语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询