一个C语言程序看不懂,求大神指教

#include<stdio.h>main(){inta=5;while(!(a-->5)){switch(a){case1:a++;case4:a+=4;case5:a... #include<stdio.h>
main()
{ int a=5;
while(!(a-->5))
{ switch(a)
{ case 1:a++;
case 4:a+=4;
case 5:a+=5;break;
defalut:a-=5;
}
}

printf("%d\n",a);
}
这个结果是什么,怎么得出来的?
展开
 我来答
匿名用户
推荐于2016-11-25
展开全部
12.
a=5,a-->5是比较a>5不成立,结果为0,然后a--,a=4。
此时!(a-->5), 为(!(0)),即(1),while循环条件成立。
a=4,执行a+=4,a=8.由于后面没有break,所以还会执行a+=5.a=13.
然后break。
此时a-->5,13>5成立,结果为1,然后a=12.
而(!1)=(0),while循环条件不成立。结束循环。
输出a,即12.
匿名用户
2015-08-29
展开全部
结果是12
a-->5,按照符号的优先等级表示的是a--大于5,显然a--是4,所以!(a-->5)为真。运行switch。
switch(a),a现在为4,跳到case 4,a+=4表示a=a+4就是等于8,然后执行case 5:,a+=5等于13.然后break跳出switch。回到while。
!(a-->5)显然为非真,跳出while,前面运行了a--,所以a最终等于12.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-08-29
展开全部
#include<stdio.h>
main()
{ int a=5; //a的初值是5,
while(!(a-->5)) //当a小于等于5时
{ switch(a)
{ case 1:a++; //当a=1时,从这一句执行到break
case 4:a+=4; //当a=4时,从这一句执行到break
case 5:a+=5; ////当a=5时,从这一句执行到break
break;
defalut:a-=5; 当a不等于1,4,5时执行
}
}
printf("%d\n",a);
}

a=5,经过while后a=4,从case 5执行a+=5(即a=a+5),所以a=,9.
a=9,不满足while语句,退出循环,
执行输出,a=9.
追问
额,结果是12啊,刚刚上机试过了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式