有任何编译器将“char”视为“无符号”吗?

问题描述 投票:0回答:3

是否有任何 C 编译器将默认的 char 类型视为无符号,除非用户在文件或项目设置中明确提及?

c char signed unsigned-char
3个回答
15
投票

海湾合作委员会确实如此。但仅当针对以 unsigned char 为约定的平台进行编译时,包括 ARM linux[*]。当 GCC 编译 x86 时,默认对 char 进行签名。

[*] 或者至少过去是这样。据我所知,从那以后 linux 已经在 ARM 上切换到不同的默认 ABI。

更新 '2013: Android NDK 的 ARM 编译器(gcc、clang)默认为

unsigned char
。 x86 和 MIPS 编译器默认为
signed char


4
投票

该标准要求标准要求的所有字符(A-Z、a-z、0-9、基本标点符号等)的整数值为正数,因此任何使用这些字符值超出

 范围的编码的系统signed char
必须 具有未签名的普通
char
。我相信这意味着所有 EBCDIC 系统都必须有一个未签名的普通
char
,但我可能是错的。


2
投票

通常有一个选项可以将其设置为默认值,但据我所知,没有编译器这样做。

© www.soinside.com 2019 - 2024. All rights reserved.