返回列表 发帖

会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);
}
就没有影响.谁能告诉我??

会C的请进!!

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

TOP

会C的请进!!

:) x86斑竹是很热心的哦~

TOP

会C的请进!!

呵呵,果然是斑竹啊,我明白了,谢谢!!嘿嘿..

TOP

会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

TOP

返回列表 回复 发帖