int a=-2,b=0;while(a++) ++b;printf("%d%d\n",a,b);为什么是1,2 请详述过程

 我来答
不懂就上网
推荐于2018-03-03 · TA获得超过252个赞
知道答主
回答量:108
采纳率:0%
帮助的人:84.5万
展开全部
第一次循环 结束 a = -1, b = 1;
第二次循环开始时 a = -1,b =1;
第二次循环结束 a = 0, b = 2;
第三次循环开始 a = 0, b =2;
结果a=0了,while判断此时的a不满足条件了,然后a++开始执行,a = 1 因为条件不满足,循环体不会执行++b,所以b的值没有变化。

重点在于while(a++)这句,虽然当a=0的时候,条件已经不满足了,虽然循环体的东西不会执行,但是a++这句还是会执行。根据你的结果应该是这种解释。恩 就是这样,我是来混红包的。
匿名用户
2014-01-24
展开全部
1.初始状态:a=-2,b=0
2.第一次运行完while(a++) a=-1,b=0
3.第一次运行完++b; a=-1,b=1
4.第二次运行完while(a++) a=0,b=1
5.第二次运行完++b; a=0,b=2
6.第三次运行完while(a++) a=1,b=2 这时候发现a已经大于0了,于是没有进入循环
7.最终结果:a=1,b=2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
share_fun1
2014-01-24 · TA获得超过609个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:364万
展开全部

我把代码整理成可读性比较好一点的,你看看好理解不

这段代码相当于

int a = -2,b = 0;
while(a!=0) {a = a+1;b = b+1;} a = a+1;
printf("%d%d\n",a,b);

这样应该好理解了吧?

谢谢采纳

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woailuo帅
2014-01-24 · TA获得超过823个赞
知道小有建树答主
回答量:1354
采纳率:40%
帮助的人:591万
展开全部
非零为真,
a++是先用a再让a+1
所以a到0经过了2次,b就=2,a再+1=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式