读书人

EffectiveC++ 条约2的疑问

发布时间: 2012-10-19 16:53:36 作者: rapoo

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));

读书人网 >C++

热点推荐