Chinaunix首页 | 论坛 | 博客
  • 博客访问: 434009
  • 博文数量: 103
  • 博客积分: 1455
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-15 22:17
文章分类

全部博文(103)

文章存档

2013年(4)

2012年(99)

我的朋友

分类: C/C++

2012-09-18 13:39:58

#define M(x,y,z) x*y+z
加上括号,调用宏时会把变量直接带入,重新开始计算优先级,如x=1+2 y=2+3 z=3+4
那么调用后得到1+2*2+3+3+4==15
并非(1+2)*(2+3)+(3+4)=22
 
那么同样
f=10*M(1,2,3);
f==23而不是想要的f=50的结果
那么f=10*(M(1,2,3))
或者
#define M(x,y,z) ((x)*(y)+(z))
应该就不会出问题了
阅读(727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~