为什么C++有签名和未签名

Osc*_*son 1 c++

我正在学习C++来自专业的JavaScript多年来.我知道之间的区别signedunsigned,但我不知道我理解为什么他们甚至存在.是为了表演还是其他什么?

小智 5

因为他们是需要的.

signed 存在类型,因为有时候想要使用负数.

unsigned 存在类型是因为对于某些操作,例如按位逻辑和移位,它们使用起来更清晰(例如,您不必担心符号位的表示方式等)


Dav*_*eas 5

您可以争辩说,对于无符号值,您可以获得比等效签名类型更大的正范围,但主要原因是它们允许在负数字很少或没有意义的域中映射概念.例如,容器的大小永远不会是负数.通过使用在类型中变为显式的无符号类型.

然后,两者的存在,以及隐含的转换会引发一系列不同的问题......