为什么这个程序的结果是13431

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:32:17
struct NODE
{ int k;
struct NODE *link;
};
main()
{
struct NODE m[5],*p=m,*q=m+4;
int i=0;
while(p!=q)
{ p->k=++i; p++;
q->k=i++; q--;
}
q->k=i;
for(i=0;i<5;i++)
printf("%d",m[i].k);
printf("\n");
}

请高手们说清楚点,谢谢

while循环执行两次
第一次:++i,i的值为1,赋给m[0].k
然后赋值给m[4].k,i++,i值变为2
第二次:++i,i的值为3,赋给m[1].k
然后赋值给m[3].k,i++,i值变为4
第三次:p=q,结束循环

m[2]的值为此时i的值4

主要是要理解i++和++i的区别
++i可理解为先使i加一 ,然后调用
i++可理解为先调用i,然后使它的值加一