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

2025-03-01 23:28:04
推荐回答(4个)
回答1:

第一次循环 结束 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++这句还是会执行。根据你的结果应该是这种解释。恩 就是这样,我是来混红包的。

回答2:

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

回答3:

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

这段代码相当于

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

这样应该好理解了吧?

谢谢采纳

回答4:

非零为真,
a++是先用a再让a+1
所以a到0经过了2次,b就=2,a再+1=1