我指的是这个问题
#define max(a,b) ((a<b)?b:a)
这会产生一些副作用,如答案所述;
如果您使用max(a ++,b ++)作为示例(a或b将增加两次),则会出现副作用
我无法理解这种副作用; 当我们使用max(a ++,b ++)时,为什么a或b会递增两次?
小智 7
如果你max(a++,b++)在这样的代码中使用,
x = max(a++,b++);
Run Code Online (Sandbox Code Playgroud)
文本替换发生为
x = ((a++<b++)? b++ : a++);
^ ^ ^---------Increment if condition is true
|---|---------Increment
Run Code Online (Sandbox Code Playgroud)
所以,你会被递增或者a或b两次...