硬汉嵌入式论坛

 找回密码
 立即注册
查看: 638|回复: 1
收起左侧

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

[复制链接]

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 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。 这样是不是就规避了数据类型的优先级问题了?

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2023-11-29 08:37:45 | 显示全部楼层
这个有全面的测试帖子的,每个运算都有详细说明,可以看看。

非常有意思的C整数相关测试题
https://www.armbbs.cn/forum.php? ... 5300&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 09:40 , Processed in 0.187983 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表