宏比较两个数大小A ,B怎么比;
答案:4 悬赏:10 手机版
解决时间 2021-02-05 22:15
- 提问者网友:我的未来我做主
- 2021-02-05 13:35
宏比较两个数大小A ,B怎么比;
最佳答案
- 五星知识达人网友:平生事
- 2021-02-05 14:52
#include
#define ZHENG(i) ((i >> 31) == 0)
#define FU(i) ((i >> 31) != 0)
#define COMPARE(a,b) ((ZHENG(a) && FU(b)) || (((ZHENG(a) && ZHENG(b)) || (FU(a) && FU(b))) && ((((a) - (b)) >> 31) == 0)))
void main()
{
int a = 0x80000001;
int b = 0x6FFFFFFF;
if(COMPARE(a,b))
{
printf("a >= b\n");
}
else
{
printf("a < b\n");
}
}
#define ZHENG(i) ((i >> 31) == 0)
#define FU(i) ((i >> 31) != 0)
#define COMPARE(a,b) ((ZHENG(a) && FU(b)) || (((ZHENG(a) && ZHENG(b)) || (FU(a) && FU(b))) && ((((a) - (b)) >> 31) == 0)))
void main()
{
int a = 0x80000001;
int b = 0x6FFFFFFF;
if(COMPARE(a,b))
{
printf("a >= b\n");
}
else
{
printf("a < b\n");
}
}
全部回答
- 1楼网友:老鼠爱大米
- 2021-02-05 17:51
上面那位少括号。
#define max(a,b) (((a)-(b))&(1<<31))?(b):(a)
#define max(a,b) (((a)-(b))&(1<<31))?(b):(a)
- 2楼网友:醉吻情书
- 2021-02-05 17:31
#define max(a,b) (((a)-(b))&(1<<(8*sizeof(a)-1)))?(b):(a)
这样便适用于16位/32位/64位机```
这样便适用于16位/32位/64位机```
- 3楼网友:迟山
- 2021-02-05 16:25
#define max(a,b) (((a)-(b))&(1<<31))?(b):(a)
a 和 b 的差 和 10.. 与,(既通过与操作看符号位是否为1)
我不是很明白为什么要左移动31位,
可能他们电脑的编译器,int是32位的吧。。
我的好象是16位的,所以31应该改为15
a 和 b 的差 和 10.. 与,(既通过与操作看符号位是否为1)
我不是很明白为什么要左移动31位,
可能他们电脑的编译器,int是32位的吧。。
我的好象是16位的,所以31应该改为15
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯