Board logo

标题: 会C的请进!! [打印本页]

作者: woxiaocang    时间: 2005-5-26 21:01     标题: 会C的请进!!

main()
{
int i=1,j=2,k=3,m=4;
printf("%d\n",i+=j+k);
printf("%d,%d\n",i+=j+k,j*=k=m=5);
}
为什么两次i+=j+k的值不一样呢?而
main()
{
int i=1,j=2,k=3,m=4;
printf("%d\n",i);
printf("%d,%d\n",i,k);
}
就没有影响.谁能告诉我??
作者: x86    时间: 2005-5-26 21:16     标题: 会C的请进!!

这是一个函数参数入栈顺序的问题,在c中参数默认是最后的先入栈
printf("%d\n",i+=j+k);
这里计算了i=6;
printf("%d,%d\n",i+=j+k,j*=k=m=5);
这里先计算的m=5,然后是k=m,然后是j*=k,j=j*k j==2*5==10,然后计算j+k==10+5==15,然后计算i+=15从而i=6+15==21
作者: woxiaocang    时间: 2005-5-26 21:21     标题: 会C的请进!!

呵呵,果然是斑竹啊,我明白了,谢谢!!嘿嘿..
作者: 飞鸟设计    时间: 2005-5-27 04:46     标题: 会C的请进!!

:) x86斑竹是很热心的哦~
作者: 天空飞人    时间: 2005-6-4 12:52     标题: 会C的请进!!

第二个第四行i值并没有改变所以第五行输出时没影响




欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2