在“C 的完整参考”一书中提到,char默认情况下它是无符号的。
char
但我试图用 GCC 和 Visual Studio 来验证这一点。默认情况下将其视为 已签名 。
哪一个是正确的?
书错了。该标准没有指定 plainchar是有符号还是无符号。
事实上,该标准定义了三种不同的类型:char、signed char和unsigned char。如果你#include <limits.h>再看CHAR_MIN,你可以发现 plainchar是signedor unsigned(如果CHAR_MIN小于 0 或等于 0),但即便如此,就标准而言,这 三种类型是不同的。
signed char
unsigned char
#include <limits.h>
CHAR_MIN
signed
unsigned
请注意,char这种方式很特别。如果将变量声明int为 100% 等同于将其声明为signed int. 这对于所有编译器和架构都是如此。
int
signed int