首页 > 代码库 > 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句(转载)
请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句(转载)
笔试的时候经常问这些:
方法一:
- #define max(a,b) ((((long)((a)-(b)))&0x80000000)?(b):(a))
若a>b,则a-b的二进制最高位为0,与上任何数还是0,所以大数为a;
否则,a-b为负数,最高位为1,与上0x80000000(最高位为1其他为0)之后为1,所以此时最大数为b。
方法二:
- #define max(a,b) ((((a)-(b))&(1<<31))?(b):(a))
方法三:
1、#define max(a,b) (((abs((a)-(b)))==((a)-(b)))?(a):(b))
注意 #define max(a,b) ((a)-(b))? a:b 是错误的。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。