好奇怪的问题!~~~~~~
我刚看了Effective C++电子书里面的第一节,上面说了这么一个问题"
#define max(a,b) ((a) > (b) ? (a) : (b))
这个语句有很多缺陷,光想想都让人头疼,甚至比在高峰时间到高速公路去开车还让人痛苦。
无论什么时候你写了象这样的宏,你必须记住在写宏体时对每个参数都要加上括号;否则,别人调用你的宏时如果用了表达式就会造成很大的麻烦。但是即使你象这样做了,还会有象下面这样奇怪的事发生:
int a = 5, b = 0;
max(++a, b);// a 的值增加了2次
max(++a, b+10); // a 的值只增加了1次"
我在VC 上面试了试,果然是这样的,但我就搞不清楚哦,到低怎么会事呢/.?
各位高手能说说吗??