不用if,条件表达式,switch等判断语句------找出两个数a,b中较大的int c = a - b; char *strs[2] = {"a large","b large"}; c = unsigned(c) >> (sizeof(int)*8 - 1); cout
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 08:21:38
不用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;
char *strs[2] = {"a large","b large"};
c = unsigned(c) >> (sizeof(int)*8 - 1);
cout
不用if,条件表达式,switch等判断语句------找出两个数a,b中较大的int c = a - b; char *strs[2] = {"a large","b large"}; c = unsigned(c) >> (sizeof(int)*8 - 1); cout
你好!这个题目不错啊~~
主要考负数的补码表示形式,还有正数与负数的右移运算区别;
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
------------------------
给分我吧~