[c]关于循环结构的问题

来源:百度知道 编辑:UC知道 时间:2024/04/26 12:29:38
#include<stdio.h>
main()
{ int i,b,k=0;
for(i=1;i<=5;i++)
{ b=i%2;
while(b-->=0)k++;
}
printf("%d,%d",k,b);
}

问输出结果 答案给的是8,-2,前边的8明白 后边的2不是很明白

对于那个while语句,你需要清楚:在进行最后一次比较(b-->=0)是否成立之前,b的值是多少!!
很显然,此时b=-1 (b=0时依然成立);然后再进行最后一次比较(不成立),由于b--的缘故,b又再次自减1,变成了b=-2。
注意:b--是先取b的值(去进行计算或比较)之后再自减1。

++,--的用法
i++,i--,取i后再计算++,--
++i,--i,计算后再取i

一开始i=1,开始循环,b=1,再进入while语句,b=0了,k=1,再回到while看条件,b=-1,k=2,继续while,b=-2了,然后i++.到这里FOR循环第1次就结束了.
i=2,开始循环,b=0,再进入while语句,b=-1了,k=3,在while,b=-2,............,i=3....i=4....
每次FOR循环,b都是=-2的,这样到最后,k=8,b=-2
不知道你看清楚我写的没有,希望帮到你,谢谢!

因为最后因为最后i=5;b=i%2=2