如何解决如果我的目标是可移植性,我应该对具有负值的字符使用带符号的字符吗?
char
数据类型不能保证被签名,这意味着在某些实现中它是 signed
,而在其他实现中它是 unsigned
。那么为什么人们总是忽略 signed
限定符?
char c = 'C'; // can be signed or unsigned
signed char sc = 'D'; // explicitly signed
unsigned char uc = 'e'; // explicitly unsigned
-
为了可移植性,如果我希望字符保持负值,我是否应该总是用
char
限定signed
? 正如我所了解的其他类型,如
int
、long
、short
总是signed
,除非用unsigned
明确限定。>
解决方法
类型 char
主要用于存储字符(或者,在 Unicode 时代,部分字符代码)。从这个意义上说,你不应该关心它是否有符号,只要它能够表示字符即可。
当您需要 char
大小的整数时,您应该使用 signed char
或 unsigned char
或它们的典型别名之一(例如 int8_t
或 uint8_t
)。这将确保签名并区分类型和字符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。