答案是D因为:
一开始的时候x和y都是10,
然后就进入了for循环,
for循环里面的初始化语句是i=0,所以i就i=0;for循环里面的条件是x>8,也就是10>8,条件成立,所以就进入循环
然后循环里面说printf(“%d %d”,x--,y);
上面的意思就是说把x和y的值打印出来
所以就打印出来了10 10
之后因为后面有写着x--,所以x变成了9,(x--的意思就是说先把之前x的值用了它才会-1,这也就是为什么上面x的值是打印了10)
然后呢就继续循环,
i的初始值是0,而y=++i,所以y就变成了1,(首先i=0,然后y被赋值++i,意思就是y=1+i,也就是y=1+0,所以y=1)
(补充:x--和++i的区别就是;x--是先把之前x的值用了它才会-1,而++i是先把原本的值+1了,再拿来用)
接下来就在看for循环里面的条件是x>8,也就是9>8,条件成立,所以就进入循
然后循环里面说printf(“%d %d”,x--,y);
所以就打印出来了9 1
之后因为后面有写着x--,所以x变成了8,
然后又y=++i,所以y就变成了2,注意上面的i的值已经变1了,所以又在++i就是y=1+1
接下来就在看for循环里面的条件是x>8,也就是8>8,条件不成立,所以就结束循环
最后打印出来的结果就是10 10 9 1
这里补充一下for循环:
for(初始化语句; 循环条件; 自增或自减)
{
语句块;
}
每次执行for循环都是先执行初始化语句(每次进入for循环初始化语句只执行第一次)再看循环条件是否成立,条件成立就执行语句块(条件不成立就结束循环),执行完语句块后在执行自增或自减,接着再看循环条件是否成立,就一直这样重复下去,直到循环结束。
顺序:初始化语句——>循环条件——>语句块——>自增或自减——>循环条件——>语句块——>自增或自减——>循环条件——>直到循环条件不成立