caicaptain2 发表于 2023-11-28 15:46:09

无符号和有符号数的大小比较和加减运算问题

本帖最后由 caicaptain2 于 2023-11-28 15:48 编辑

查阅了资料,已知无符号数a=1,有符号数b=-1


比较大小时, c语言统一按照无符号数来比较,所以 a<b 为真。 这很容易造成理解失误。

但是,无符号和有符号进行加减计算的时候,都是用补码进行的,不论有无符号,结果都是正常的。
那么,是否可以用a-b>0 来判断是否a>b呢? 因为0在无符号和有符号格式里,是完全一样的。
这里a-b=2,大于0,所以可以正确的得到结果1大于-1。 这样是不是就规避了数据类型的优先级问题了?

eric2013 发表于 2023-11-29 08:37:45

这个有全面的测试帖子的,每个运算都有详细说明,可以看看。

非常有意思的C整数相关测试题
https://www.armbbs.cn/forum.php?mod=viewthread&tid=115300&fromuid=58
(出处: 硬汉嵌入式论坛)
页: [1]
查看完整版本: 无符号和有符号数的大小比较和加减运算问题