首页 > 其他 > 详细

P53 有符号数和无符号数的比较

时间:2020-01-01 22:22:50      阅读:98      评论:0      收藏:0      [点我收藏+]

C语言在处理无符号数时,将有符号数强制类型转换为无符号数进行运算。

这种行为对一般的算术运算没有影响,比如

1     int a=-10;
2     unsigned b=12;
3     printf("%d\n",a+b);
4     printf("%u\n",a+b);

运行结果

技术分享图片

但是对于比较运算符(>,<,==),就会产生一些问题。

比如

1     int a=-1;
2     unsigned b=1;
3     printf("%d\n",a<b?1:0);

我们期望的结果是-1<0,输出为1

实际运行结果

技术分享图片

比较过程中,有符号数-1被强制类型转换为无符号类型,在32位的机器上,ua=a+pow(2,32);所以ua>>b

 

2.21 答案

类型   求值

无符号   1
有符号   1
无符号        0
有符号        1
无符号        1

P53 有符号数和无符号数的比较

原文:https://www.cnblogs.com/CofJus/p/12130223.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!