基本数据类型的传值问题
main(){
int m = 12;
int n = 34;
printf("%d%d",m++,++n);
printf("%d%d",n++,++m);
}
为什么输出结果是12353514
如果int只是值传递,不影响m,n,那执行第二句输出语句时传入的还是m=12,n=34,结果为什么不是12353413
请问我是哪里理解错了?
25
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小小
2021-06-28 19:12:23
同学你好,值传递是发生在调用方法时的,所以此处不是值传递,对m、n是有影响的。
当++在数据前,自身的值加一后再运算,++在数据后,自身的值先运算再加一。
第一个输出语句中,m++,++在后,自身的值先运算所以输出的是12,输出后m的值后m加1为13;
第一个输出语句中,++n,++在前,自身的值先自增1在运算,所以输出的是n增加1后的值为35。
第一个输出语句执行结束后m=13,n=35。
第二个输出语句,n++,++在后,自身的值先运算所以输出的是35,
第二个输出语句,++m,++在前,自身的值先自增1在运算,所以输出的是m增加1后的值为14。
所以最终输出结果为:12 35 35 14。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星