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
请高手帮忙解释一下
展开
 我来答
长鱼琨瑜sR
2019-01-02 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:35%
帮助的人:886万
展开全部
&y[6]是y[6]的地址,也就是说,fun接受了一个这样的字符串:"s_an_example."
fun()无非就是和strlen()一个作用,返回字符串的长度,那么长度因该是13或者14;
注意:如果那个句号是你打错了的话就是13,否则一个全角的句号占用2个字节,因此是14
字符串结束标志'\0'数学上与0是相等的,因此当读到字符串尾时,*s==0,while(*s)条件不成立,退出循环,返回n的值
阳光上的桥
2010-03-03 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65798
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
仔细看教材,switch语句里面,满足一个case条件之后开始执行,如果没有遇到break语句,会继续执行下一个条件的语句。

例如你的程序,如果x值为1,那么执行case 1之后的a++语句之后,还会执行case 2之后的a++、b++两个语句。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
远方的阿亮
2010-03-03 · 资深旅行达人, 记录和分享旅途中的美好!
远方的阿亮
采纳数:118 获赞数:480

向TA提问 私信TA
展开全部
switch语句的执行流程:当表达式的值和某个case后面的语句相同时执行这个case后面的语句(并接着执行下面的语句,如果不希望接着执行下面的语句要用break语句跳出)。
所以楼主你知道,case 1:a++;这个语句先执行,后面没有break语句,所以紧跟着还要执行case 2:a++;b++;语句;
楼主现在知道为什么结果是a=2,b=1,了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
商一和尚
2010-03-03
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
++(--)在前(如++i),先运算再取值;
++(--)在后(如i++),先取值再运算;
switch (x)
{
case 0:b++;break;
case 1:a++;break;
case 2:a++;b++;break;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
左青龙
2010-03-03 · TA获得超过664个赞
知道答主
回答量:205
采纳率:0%
帮助的人:116万
展开全部
case 1:a++;(没有break)
case 2:a++;b++;}

若有则为 a=1,b=0
若无 则继续执行下一条语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式