首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

此题答案是什么,为何?解决思路

2012-06-14 
此题答案是什么,为何?#includeiostream.h#defineMA(x)x*(x-1)main(){int a1,b2coutMA(1+a+b)}[解

此题答案是什么,为何?
#include<iostream.h>
#define MA(x) x*(x-1)
main()
{  
int a=1,b=2; cout<<MA(1+a+b);
}

[解决办法]
宏是字符串替换,所以变成了

1+a+b*(1+a+b-1) = 1 + 1 + 2 * (1 + 1 + 2 - 1) = 8

正确写法是
#define MA(x) (x)*(x-1)
[解决办法]
就是:
1 + a + b * (1 + a + b - 1)
[解决办法]
cout<<MA(1+a+b);通过宏展开是

cout<<1+a+b*(a+b);

把数值代入就知道了是8
[解决办法]
楼主只要记住一点以后这种问题就不会出错了 宏就是代码替换

热点排行