有关宏定义的bug

#define max(a,b) a>b?a:b

这个宏有诸多缺点:
当调用比如max(3,2)*2时会出现不想要的结果.按理来说,我们想要得到的结果是:3*2=6,但是由于优先级的问题,得到的结果是:3>2*2?a:b即得到答案是4;
修改如下:
#define MAX(a,b) ((a)>(b)?(a):(b))

技术是一张窗户纸,一捅就破,come!
原文地址:https://www.cnblogs.com/adeng-x/p/6248036.html