
判断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); 后两句什么意思啊,整体思想我也不懂。请大家帮忙 展开
char*strs[2]={"a large","b large"};
c=unsigned(c)>>(sizeof(int)*8-1); 后两句什么意思啊,整体思想我也不懂。请大家帮忙 展开
展开全部
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
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询