c语言求助!!!

int i=5,n,m,x;
printf("%d,%d",m=++i,i);
return 0;
结果是6,5
int i=5,n,m,x;
printf("%d,%d",i,m=++i);
return 0;
结果是6,6
int i=5,n,m,x;
m=i++
printf("%d,%d",m,i);
return 0;
结果是6,5
int i=5,n,m,x;
m=i++
printf("%d,%d",i,m);
return 0;
结果是5,6
为什么1,2个源程序调换括号里的i,m结果变了
而3,4个源程序调换括号里的i,m结果没变??

结果是你自己分析的吧
你实际运行一下吧,int i=5,n,m,x;
m=i++
printf("%d,%d",m,i);
return 0;
结果是6,5

结果不是6,5 是5,6啊

你只要弄明白:m=i++是先运行m=i,然后在执行i=i+1的 ++i是先加一然后使用,i++是先使用再加一。

printf是从右向左执行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-24
这个问题和参数的赋值方式有关,如果是传数值的方式,最后结果不变;如果是传地址的方式会导致最后结果改变的。
具体的建议你还是去看下相关的书吧```
第2个回答  2020-11-07
相似回答