设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1316|回复: 4
打印 上一主题 下一主题

谁帮我解释下这句语句执行的顺序!

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 02:00:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iostream>
#define ADD(x) x+x
using namespace std;

int main()
{    int m=1,n=2,k=3;
     int sum=ADD(m+n)*k;
     cout<<sum;
     system("pause");
     }
  为什么运行结果等于10?
我是这样算的: sum=ADD(1+2)*3=6*3=18
那里不对呀?
2#
发表于 2009-11-4 02:00:03 | 只看该作者
等效
cout<<m+n+m+n*k<<endl;

你使用
#define ADD(x) (x+x)
才能得到正确的 18
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 02:00:04 | 只看该作者
嗯, 就是个括号的原因吧...定义宏时要小心...
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 02:00:05 | 只看该作者
定义宏 时 最好 给每个变量都加上括号
#define ADD(x) ((x)+(x))
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 02:00:06 | 只看该作者
在宏定义的运算中,不要做任何处理,只需原封不动的照样写就行了,
宏只是给表达式或数值起的另一个名字而已,故不要加入个人的偏见。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 02:47 , Processed in 0.072518 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

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