TC小问题 请高手解释一下为什么输出的结果是6啊。我怎么想都觉得是5.

来源:百度知道 编辑:UC知道 时间:2024/06/15 02:07:25
main()
{
int a=10,b=5,k=0;
do k++;while(a>b++);
printf("%d",k);
getch();
}

第一次 k=1 b=5
第二次 k=2 b=6
....
第六次 k=6 b=10

因为do..while...句型是先执行一次do的内容再判断.

B++和++B是不一样的,B++是做了再加,++b是先加了再做。

b++ 的返回值是b运算前的值,即 b=5 时, b++返回 5
这样, a > b++ 这句会5次返回true (5 6 7 8 9),每次返回true都会接着执行k++,这样k++一共执行了6次,所以返回6

k=1 b++=5
k=2 b++=6
k=3 b++=7
k=4 b++=8
k=5 b++=9
k=6 b++=10 退出循环
k=6

do while 这个条件循环是先执行语句,再判断条件,在这个程序中,K++是执行6次的,所以应该输出6。6次分别是:b=5,b=6,b=7,b=8,b=9,b=10
因为是先判断,所以K++是先执行的,然后才判断a>10为假,退出循环。