C语言,while循环问题

#include<stdio.h>
main()
{ int x=10,y=10,i=0;
while(x>8)
{ printf("%d %d\n",x--,y);
y=++i;
}
}

为什么输出了两组结果呢,嗯 然后对这个循环也不太理解 希望能讲解一下 谢谢

第1个回答  2012-09-29
当x = 10的时候,可以进入循环,
然后x--的话是先输出本身,即输出10 再减去1 变成9
这样第一次你就看到输出的是10 10,这句完了后y就变成1了。
到第二次的时候x == 9满足条件继续循环,这次就会输入输出x == 9,y ==1
同样x--后会变成8,不满足条件,因而推出循环,程序结束
第2个回答  2012-09-29
10 > 8,第1次循环,其中x--是先不自减x,求表达式x--的值,此时表达式的值即x的值为10,求完后x自减1变成9,而此时y求值是10,++i是i先自增1,再对表达式求值,此时++i表达式值即i的值为1,所以此时y为1。
9 > 8,第2次循环,同样如上的道理,此时x--项表达式的值为9,求完后x变为8,y项表达式的值为1,由于i值没变,所以每次循环中均给y赋++i的值即1。本回答被提问者采纳
第3个回答  2012-09-29
你的判断条件是x>8
只要这个条件成立就执行。
而你下面却是只有一次x--
这样x=9了
所有在x>8这个条件上还是成立的
循环就在执行一次
所以 就出现了你现在的结果了
第4个回答  2012-09-29
当x>8时循环继续,开始时x=10;y=10;,然后x--为9,y=1,输出,再下一次x=8,不满足x>8的条件,循环结束
第5个回答  2012-09-29
当x=10 满足条件,循环一次
x--,后x=9,满足条件,再循环一次
相似回答