作业帮 > 综合 > 作业

不用if,条件表达式,switch等判断语句------找出两个数a,b中较大的

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/22 11:36:09
不用if,条件表达式,switch等判断语句------找出两个数a,b中较大的
int c = a - b;
char *strs[2] = {"a large","b large"};
c = unsigned(c) >> (sizeof(int)*8 - 1);
cout
不用if,条件表达式,switch等判断语句------找出两个数a,b中较大的
你好!这个题目不错啊~~主要考负数的补码表示形式,还有正数与负数的右移运算区别;int c=a-b;  当a<b时,c为负数,其最高位为符号位为1;比如1000010101010110..符号位为0表示为正数;符号位为1表示负数
unsigned(c) >> (sizeof(int)*8 - 1); 首先将C转换成无符号int型,再右移31bit;这样得到了c这个数的符号位; 为什么要unsigned(c)unsigned(c)将c变为无符号整形, 这样右移运算时,高位补0; 而负数的右移运算将高位补1 最后出来的结果 要么是0,要么是1 ------------------------给分我吧~