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

为什么运行的结果8;还望大家解释一下;谢谢

额 一开始我被糊弄到了 后来用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呵呵
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-07
这是正常的,因为循环只执行了一遍!
do....while()的用法是执行一遍之后判断是否符合条件!
对应本题就是执行一遍之后,检查b--是否小于0,若果小于0则继续执行,不小于0则退出!
第2个回答  2010-11-07
不是8能是什么?
一开始, a=1, b=10
b-=a; 这时b=9了
a++; 这时a=2了,b还是9
while(b--<0) ; 这时b为8了,所以条件不成立,跳出循环。

所以,最后b=8.
第3个回答  2010-11-07
在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
第4个回答  2010-11-07
首先b-=a,这时b=10,a=1,执行后b=9,a=2
然后while(b--<0),b--了一次,b=8
相似回答