【发布时间】:2017-03-07 20:17:30
【问题描述】:
据我所知,unsigned char 和 signed char 之间没有太大区别,除了 -127 到 128 的有符号字符和 0 到 255 的无符号字符。我正在尝试学习 C++,我一直在想这个问题。另外,我很长一段时间都是 lua 程序员,所以我习惯于无符号字符,所以我只是想知道它们之间的区别以及什么时候你更愿意使用有符号字符而不是无符号字符。
谢谢。
【问题讨论】:
-
如果你在做位操作,无符号类型是首选。
-
请记住,如果普通
char被签名或没有签名,它的实现就被定义了。因此,如果您想要一个范围内的小整数,您可以使用signed char(或unsigned char)。但我宁愿推荐int8_t和uint8_t来代替(如果可用)用于通用小整数。 -
哦,我明白了。感谢你们两位花时间回复
-
有符号字符的范围通常在 -128 到 127 之间,因为补码会将“额外”值用于负数。在 C++11 之前,保证 范围仅为 -127 到 127,因为它允许 8 位符号幅度表示,即使大多数实现都是二进制补码。
-
unsigned char 是 C 的传统说法“字节”。 singed char 是一个小的有符号整数。一个应用程序是 3D 几何的迷你法线,其中 3 个浮点数会太占用内存。
标签: c++