请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

# 题目

请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句


# 解题思路

(*  ̄︿ ̄)
不让用大于,小于,怎么比较大小!
( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)
老师你过来我不打你!
=_=
让我们冷静一下
o( ̄▽ ̄)o
+ - * / 你们过来。
<( ̄︶ ̄)↗[GO!]
比较大小自然想到了两数相减,判断正负。
-。-
可是不让你[大于 小于 if]怎么判断正负呢?
o( ̄︶ ̄)o
自然只能考虑到位运算 我们知道负数使用link 补码表示的。也就是最高位是1,我们判断一下最高位是不是1就可以知道是不是负数了。
<( ̄▽ ̄)/
来来来!1<<31 变成除了最高位是1,其他位都是0,然后咩哈哈哈,和(a-b)&(1<<31)就知道了。

#define (a-b)&(1<<31) ? b : a

恩 上面就是答案了,但是!这是不完美的! 定义宏切记加()。

#define (((a)-(b))&(1<<31)) ? (b) : (a)

这个才是正确的答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值