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

EffectiveC++ 条约2的疑问

2012-10-19 
EffectiveC++ 条款2的疑问代码如下:C/C++ code#define CALL_WITH_MAX(a, b) ((a) (b) ? (a) : (b))int m

EffectiveC++ 条款2的疑问
代码如下:

C/C++ code
#define CALL_WITH_MAX(a, b) ((a) > (b) ? (a) : (b))int main(){    int a = 5, b = 0;    CALL_WITH_MAX(++a, b);//这里为什么a会被累加两次?    std::cout << "a: " << a << ", b: " << b << std::endl;    CALL_WITH_MAX(++a, b+10);    std::cout << "a: " << a << ", b: " << b << std::endl;}

求解。

[解决办法]
宏就是替换
CALL_WITH_MAX(++a, b);展开后
((++a) > (b) ? (++a) : (b));

热点排行