任何将'char'作为'unsigned'的编译器?

时间:2010-09-16 15:12:12

标签: c compiler-construction char signed unsigned-char

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

/卡努_

3 个答案:

答案 0 :(得分:12)

GCC确实如此。但只有在编译无符号字符的平台时,包括ARM linux [*]。当GCC编译为x86时,默认为char签名。

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

更新'2013: Android NDK的ARM编译器(gcc,clang)默认为unsigned char。 x86和MIPS编译器默认为signed char

答案 1 :(得分:4)

标准要求标准所需的所有字符的整数值(AZ,az,0-9,基本标点符号等)为正,因此任何系统使用编码,其中这些字符的值超出范围signed char 必须char无格式。我相信这意味着所有EBCDIC系统都必须有一个未签名的普通char,但我可能会弄错。

答案 2 :(得分:2)

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