职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 710|回复: 2

C语言实参求值顺序

[复制链接]
蓝精灵 发表于 2009-8-16 11:06 | 显示全部楼层 |阅读模式
#include \"stdio.h\"
void fun(int a,int b)
{
printf(\"a=%d,b=%d\\n\",a,b);
}

main()
{
int m=5;
fun(m+3,m++);
}
这个程序的结果是a=8
b=5
可是实参为什么不是从左到右计算呢?
#include \"stdio.h\"
void fun(int a,int b)
{
printf(\"a=%d,b=%d\\n\",a,b);
}

main()
{
int m=5;
fun(m+3,++m);
}
如果把m++改成++m
这样的结果就变成了a=9
b=6了
这样又变成从右到左计算了?
宁采臣 发表于 2009-8-16 11:07 | 显示全部楼层

C语言实参求值顺序

不是从左到右
从右到左

有什么区别么?
东莞维维 发表于 2009-8-16 11:07 | 显示全部楼层

C语言实参求值顺序

++在变量前时是先自加后使用
在变量后时是先使用后自加
所以m++是先输出m=5后m再自加
++m是m先自加了再输出的所以m=6
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-29 04:18 , Processed in 0.125121 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表