macros caused troubles...
最近在看 C++ 的书, 在讲到不要用 宏, 要用inline funtion 时给出了一个例子。
#define max(a,b) ((a) > (b) ? (a):(b))
...
下面的例子有bugs:
int a=5, b=0;
max(++a,b); //a is incremented twice
max(++a,b+10); //a is incremented once
....
哪位能分析一下为何 max(++a,b); //a 加2次
max(++a,b+10) //a 加1次
谢谢