int a=-2,b=0;while(a++) ++b;printf("%d%d\n",a,b);为什么是1,2 请详述过程
4个回答
展开全部
第一次循环 结束 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++这句还是会执行。根据你的结果应该是这种解释。恩 就是这样,我是来混红包的。
第二次循环开始时 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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我把代码整理成可读性比较好一点的,你看看好理解不
这段代码相当于
int a = -2,b = 0;
while(a!=0) {a = a+1;b = b+1;} a = a+1;
printf("%d%d\n",a,b);
这样应该好理解了吧?
谢谢采纳
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
非零为真,
a++是先用a再让a+1
所以a到0经过了2次,b就=2,a再+1=1
a++是先用a再让a+1
所以a到0经过了2次,b就=2,a再+1=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询