含人体器官的四字词语:c语言这二个题为何结果不一样呢!

来源:百度文库 编辑:高考问答 时间:2024/05/01 07:31:22
第一个
main()
{
int a[5]={1,3,6,10,15};
int i,j;
for (i=0;i<5;i++)
{
for(j=i;j<5;j++)
{
if(i==0){
printf(" %d",a[j]);
}else{
printf(" %d",--a[j]); /*改了的部分*/
}
}
printf("\n");
}
}
第二个
main()
{
int a[5]={1,3,6,10,15};
int i,j;
for (i=0;i<5;i++)
{
for(j=i;j<5;j++)
{
if(i==0){
printf(" %d",a[j]);
}else{
printf(" %d",a[j]-1); /*改了的部分*/
}
}
printf("\n");
}
}
我想你们学艺不精的人请先运行条程序再想想特别是最后一个人所说的,

TC的BUG太多了,建议使用VC++学习C语言

--a[j]已经把数组第j个元素给减1了,
a[j]-1没有改变第j个元素

我开始学的时候也经常范这种错误,印象太深了:)

因为--a[j]已经把数组第j个元素给减1了,
a[j]-1没有改变第j个元素

--a[j]相当于a[j]=a[j]-1,也就是说,你用--a[j]的时候,就是对a[j]的值做减一操作后重新赋值给a[j]了。但是a[j]-1只是对a[j]的值做减一操作,并没有重新给a[j]赋值,所以a[j]的值不会发生变化。

1 --a[j] 其实这样操作的a[j]=a[j]-1;
2 没有进行赋值操作.

他们两个说的都对这里,一个改变了数组元素本身的值,一个没有改变数组元素的值。