小编典典

char 默认是有符号还是无符号?

all

在“C 的完整参考”一书中提到,char默认情况下它是无符号的。

但我试图用 GCC 和 Visual Studio 来验证这一点。默认情况下将其视为 已签名

哪一个是正确的?


阅读 189

收藏
2022-08-02

共1个答案

小编典典

书错了。该标准没有指定 plainchar是有符号还是无符号。

事实上,该标准定义了三种不同的类型:charsigned charunsigned char。如果你#include <limits.h>再看CHAR_MIN,你可以发现 plaincharsignedor unsigned(如果CHAR_MIN小于
0 或等于 0),但即便如此,就标准而言,这 三种类型是不同的。

请注意,char这种方式很特别。如果将变量声明int为 100% 等同于将其声明为signed int. 这对于所有编译器和架构都是如此。

2022-08-02