使用宏实现max(a,b)

#define MAX(x, y)  ({\
typeof(x) _x = x;\
typeof(y) _y = y;\
(void)(&_x == &_y);\
_x > _y ? _x : _y;\
})

其中最精彩的地方是: (void) (&_x == &_y) 用于判断输入的两个值的类型是否是一致的。如果不一致,那么编译器就会做出如下警告:warning: comparison of distinct pointer types lacks a cast。
加上void是因为这个语句看上去并没有什么作用,有可能被编译器优化掉,因此需要void强制执行。

转自:https://www.cnblogs.com/GyForever1004/p/8678554.html

全部评论

相关推荐

哞客37422655...:你猜为什么福利这么好还得一直追着你问
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务