不同的编译器对 char 类型是否带符号有不同的规定,也就是说,你在源程序里写的 charc ;可能会被编译器当作 signed charc 也可能被当作 unsigned char c .请编写程序,测试你用的编译器是怎样对待 char 类型的,如果当作带符号数,输出" signed ".如果当作无符号数,输出" unsigned ".
#include <stdio.h>
int main()
{
char c = 128;
if (c > 0)
printf("unsigned");
else
printf("signed");
return 0;
}
char如果是unsigned 范围就是0255127
是signed 范围 是-128
现在令char c = 128;
如果是signed 的 ,c就是-128
char c=128;
if(c>0)printf("unsigned");
else printf("signed");
1、char 在Keil编译器中被当作成了无符号的8位整数处理了。
2、char变量避免与负值算术、逻辑运算。
2、对于不同的编译器,对变量的编译处理方式有可能存在差异,建议使用统一头文件 stdint.h
3、char一般用于存储字符数据,数值常量避免使用,用signed char和unsigned char代替,stdint.h定义了int8_t和uint8_t.