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

没有什么比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的区别所带来的工作效率下降,我倒是可以举出很多例子:)

原文地址:https://www.cnblogs.com/hehe520/p/6330472.html