坐久了 肾涨酸痛:请TC高手解答下!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 20:59:14
main()
{int i,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
} 为什么一定要第二个循环才能排出来呢?只要前面一个输出来是-48.请详细说明下!谢谢
谢谢各位了,你们的答案都是正确的!
所以我只好选第一个,还是谢谢大家了!

你说的是这种情况吧。
for(i=0;i<=9;i++)
a[i]=i;
printf("%d",a[i]);

i在printf之前的时候是等于10的!也就是说你打印的是a[10],超下界了!
此时&a+10里存的什么东西谁也不知道!

可以写成
for(i=0;i<=9;i++) {
a[i]=i;
printf("%d",a[i]); }

但这是正序,源程序是反着的

第一个for循环是给数组a[i]赋值,第二个for循环是输出数组a[i]每个元素的值。程序执行完第一个循环后,i的值为10,要是没有第二个循环,输出的是a[10]的值。但a[10]没有定义,也没有赋值,所以程序输出的是一个随机数。