99问答网
所有问题
C语言中为什么不能将无符号整数与有符号整数比较
如题所述
举报该问题
推荐答案 推荐于2017-11-24
不是不能比,是你未比出正确结果,两个数的区间不一样,可以内码却有可能相同,你得如此比法,例如:
int si;
unsigned int
ui;
ui = si = -100;
int res = (si<0) ? -1 : (ui>>31) ? 1 : (ui-si);
当有符号数小于0时,不用比,总是有符号的小,
当无符号数最高位为1时不用比,总是无符号位大,
有符号数不小于0而无符号数最高位不是1时才做比较,就可以得出正确结果
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/z7BjXBXzj.html
其他回答
第1个回答 2012-01-12
没这一说吧
int main()
{
int a;
unsigned b;
a=-1;
b=10;
if ( a>b)
printf("a>b\n");
else
printf("a<=b\n");
return 0;
}
以上会输出 a>b
因为在无符号与有符号数进行运算时(计算机中的运算,非数学意义上的运算),系统会自动将有符号数看成(也可以叫转换,实际没有转换)无符号数,然后进行比较。
举例:假定一个数是8位,一个字节表示
-1=11111111(补码),相当于无符号数255
10=00001010
第2个回答 2012-01-12
计算机组成原理有 有符号整数的最高位是1,无符号则可能为1可能为0,如果为0,比较会出错。
相似回答
大家正在搜
相关问题
关于C语言里的有符号整数和无符号整数的问题
C语言中有符号整型和无符号整型的区别
在C语言中长度相同的有符号与无符号整型数间,原样赋值时为什么...
C语言编程有符号和无符号整型变量显示问题
c语言中整型数据中,有符号与无符号是什么意思,能举例说明下么...
C语言中2个无符号整数相减是否可以得到有符号数?或者小数减大...
c语言中有符号和无符号整型数据处理区别
在c语言(vc6)中比较两个无符号整数大小的方法(不能使用>...