判断2个数a,b的大小。不能用、if、switch、“?”或其他判断语句

intc=a-b;char*strs[2]={"alarge","blarge"};c=unsigned(c)>>(sizeof(int)*8-1);后两句什么意思啊,整... int c=a-b;
char*strs[2]={"a large","b large"};
c=unsigned(c)>>(sizeof(int)*8-1); 后两句什么意思啊,整体思想我也不懂。请大家帮忙
展开
 我来答
yunxian_19
推荐于2016-12-01 · TA获得超过319个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:191万
展开全部
int c=a-b;//定义c,把a-b的差值赋值给c
char*strs[2]={"a large","b large"};//定义2个字符串,分别是“a large”和“b large”
c=unsigned(c)>>(sizeof(int)*8-1);
//unsigned(c)表示把c的值转换为无符号整数。
sizeof(int)//sizeof(int)表示int类型占用的内存,值为4。因此sizeof(int)*8-1=31;
//c=unsigned(c)>>(sizeof(int)*8-1)这一整句就是先把c转换为无符号整数,然后右移31位。
//左边空出的位置补零。
//该语句的目的是求出c的最高位的值,当该值为1时,表示c为负数,因此判断出a小于b。
//当该值为0时,表示c为零或者整数,因此判断出a大于等于b
四川千里潇潇
2013-07-17 · TA获得超过153个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:126万
展开全部
要判断a,b的大小,只需看c你符号就行了。
第三句的意思是:将c向右移,把符号位移到末尾。
那么c就只可能等于0(c为正数,即a>b,此时打印strc【c】 即 a large)或1(c为负数,即a<b,此时打印strc【c】 即b large)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式