#include<stdio.h>
void main()
{
int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d %d ",x--,y);
}
這個問題 似乎不是很難但答案與我算的 完全不符~ 我的答案是10 1 9 2
电脑运行的答案是10 10 9 2
爲什麽哪?
#include<stdio.h>
void main()
{
int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d %d ",x--,y);
}
這個問題 似乎不是很難但答案與我算的 完全不符~ 我的答案是10 1 9 2
电脑运行的答案是10 10 9 2
爲什麽哪?
一开始
x等于10,y等于10
当i等于0时,printf时因为是x--所以x为10,y为10,然后y=++i,i等于1,y等于1此时x为9
继续i等于1时,x为9大于8循环继续,printf时x为9,y为1,然后y=++i,i等于2,y等于2,此时x为8
8>8不满足,循环结束
输出为 10 10 9 1
如果你想输出10 1 9 2 的话,程序如下:
#include<stdio.h>
void main()
{
int x=10,y=1,i;
for(i=1;x>8;y=++i)
printf("%d %d ",x--,y);
}
for循环的执行是这样的,for(i=0;i>8;y=++i)首先执行i=0,再判断条件i>8,接着执行循环体(条件成立)。也就是printf();语句。执行完循环体后,再到y=++i;部分,再次判断条件i>8…………,如此下来!!
我怎么感觉是10 10 9 1
for(i=0;x>8;y=++i) 第一次判断是:x=10>8,然后执行循环体内,输出x=10,y=10,后x=9,y=10
第二次判断是:y=++i=1,x=9>8,执行循环体,输出x=9,y=1,后x=8,y=1
第三次判断是:y=++i=2, x=8,不执行循环体,结束
所以应该是10 10 9 1
for(i=0;x>8;y=++i) 这一句里的y=++i在第一步的时候不运行
当运行到printf("%d %d ",x--,y);后才运行y=++i;
你已经把x初始化了,不可能大于8的,所以不执行循环