[C++] unsigned是麻烦制造者

博客围绕signed和unsigned的区别展开讨论。认为unsigned提供更大正数范围对大数据意义不大,用更大位数类型更实用;其表达特定数据涵义也存在问题;虽有人认为数据范围大一倍有差距,但难以举例,而二者区别导致工作效率下降的例子却很多。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

没有什么比signed和unsigned的区别更无味了。unsinged数据类型似乎没有存在的必要。

一、unsigned可以提供更大的正数范围
反对:对于小数据来说,signed的范围就足够了;对于大数据来说,signed和unsigned所提供的范围其实几乎没什么区别。Int8, Int16, Int32, Int64,这样的变化才是有实际意义的范围延伸。如果int32不够用了,通常unsigned int32也不会够用;直接使用int64将会是通常的解决方案。

二、unsigned可以表达特定的数据涵义
反对:比如size或者index,-1固然没有意义,但是unsigned的0xFFFFFFFF又何尝有什么意义呢?如果你说0xFFFFFFFF有 意义,那么0xFFFFFFFF+1还有意义吗?如果你能保证数据不越过0xFFFFFFFF,我们同样能保证数据不越过0x7FFFFFFF。

三、有时候数据范围大一倍就是很大的差距
这个我不好直接反对,不过有谁能举一个具体的例子来说明一下这个情况么?


由于signed和unsigned的区别所带来的工作效率下降,我倒是可以举出很多例子:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值