假定a和b为int型变量,则执行以下语句后b的值是: a=1;b=10; do{b-=a;a++;}while(b--<0);

为什么运行的结果8;还望大家解释一下;谢谢
2025-01-08 09:25:50
推荐回答(5个)
回答1:

额 一开始我被糊弄到了 后来用printf一输出才发现原来错得糊弄离谱啊
b=10 a=1 b-=a 等价于b=b-a 所以b=9 a++ 所以a=2 重头戏来啦
while(b--<0) 嘿嘿 注意是<号哦 b--<0 是先用b的值与0比较大小 再b自减1 也就是说9<0 当然是假啦 所以就退出循环 又b要自减1 所以最后b=8呵呵

回答2:

这是正常的,因为循环只执行了一遍!
do....while()的用法是执行一遍之后判断是否符合条件!
对应本题就是执行一遍之后,检查b--是否小于0,若果小于0则继续执行,不小于0则退出!

回答3:

不是8能是什么?
一开始, a=1, b=10
b-=a; 这时b=9了
a++; 这时a=2了,b还是9
while(b--<0) ; 这时b为8了,所以条件不成立,跳出循环。

所以,最后b=8.

回答4:

在do执行完后,b变成9
在while语句中,先判断b<0==false
再进行b--;
所以b==8;

又例
A[3]={0,1,2};
a=1;
那么A[++a]==2;A[a++]==1;但无论是哪一个a都变成了2

回答5:

首先b-=a,这时b=10,a=1,执行后b=9,a=2
然后while(b--<0),b--了一次,b=8