【发布时间】:2016-09-05 17:01:26
【问题描述】:
我看到很多关于签名/未签名字符的答案,但不是这个确切的问题,所以如果已经有答案,请随时关闭/复制。
我知道在 C 和 C++ 中,数据类型“char”可以是有符号或无符号的。我知道不同的平台选择不同,但是 x86 和我个人使用的所有其他平台都选择了 'char' 进行签名。
在我看来,选择 unsigned char 有一些小优势,例如,如果您愿意,可以将该值用作数组索引来对值进行分类,但大概有一些原因,无论是语言相关的,或在使签名成为更好选择的目标架构中。
这些原因是什么?
【问题讨论】:
-
一致性?
int=signed int,所以一致性需要char=signed char(只是猜测) -
我问它的一个原因是我正在玩“有趣”的编译器,我发现很难理解为什么人们选择“签名”......虽然无符号的优点是次要的,它们似乎存在。我敢肯定,一定是有原因的。
-
如果您的处理器架构仅对小于寄存器大小的内存位置进行符号扩展负载,则保持
char符号可提高性能。不过,我不知道有任何架构可以做到这一点。 -
@anatolyg
char和signed char是不同的类型。