《C语言中char是根据编译器来确定是有符号还是无符号》
在C语言中,char类型的有无符号是依赖于具体的编译器实现的。在一些编译器中,char类型是有符号的,而在另一些编译器中,char类型是无符号的。由于C语言标准并没有规定char类型应该是有符号还是无符号,所以在编写代码时应当避免依赖于char类型的有无符号。如果需要确保char类型是有符号的,可以使用signed char类型;如果需要确保char类型是无符号的,可以使用unsigned char类型。
否则会出现定义char默认是有符号,但是编译器默认是无符号,会导致char val = -1;出现歧义,通过十进制打印,会发现会出现-1和255的结果。需要特别注意。
结论:如果char要做有符号,则应该signed char显式定义,否则都默认是无符号。