#define MAX(a,b) ((a):(b)?(a):(b))
//参考答案不严谨,define 的执行规则是直接将a、b代入算式,也就是它并不会自己打括号,当a、b的算式有加减运算时,会按照符号优先级规则直接运算,所以要全部打括号
#define MAX(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; (void)(&a == &b); ((_a) > (_b) ? (_a) : (_b)); })
参考答案才不对好吧
一少括号二不严谨,例如: MAX(i++, j++)直接爆炸
MAX(i++, j++)
这个GCC的写法就比较好
#define MAX(a, b) ( { typeof(a) val1 = (a); typeof(b) val2 = (b); val1 > val2 ? val1 : val2; } )
```
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题