除非用户在文件或项目设置中明确提及,否则是否有任何 C 编译器将默认类型的 char 视为无符号?
/卡努_
除非用户在文件或项目设置中明确提及,否则是否有任何 C 编译器将默认类型的 char 视为无符号?
/卡努_
海湾合作委员会会。但仅在为约定为 unsigned char 的平台编译时,包括 ARM linux[*]。当 GCC 为 x86 编译时,默认为要签名的 char。
[*] 或者至少在过去是这样。据我所知,从那以后,linux 已经在 ARM 上切换到了不同的默认 ABI。
2013 年更新: Android NDK 的 ARM 编译器(gcc、clang)默认为unsigned char
. x86 和 MIPS 编译器默认为signed char
.
该标准要求标准要求的所有字符(AZ、az、0-9、基本标点符号等)的整数值为正数,因此任何使用这些字符值超出范围的编码的系统都signed char
必须具有明明char
是无符号的。我相信这意味着所有 EBCDIC 系统都必须有一个char
未签名的明文,但我可能弄错了。
通常有一个选项可以将其设置为默认值,但据我所知,没有编译器可以做到这一点。