char型注意的问题

来源:互联网 发布:河南知春商贸有限公司 编辑:程序博客网 时间:2024/06/08 17:57
定义: char是C/C++整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,
但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的。

转换: int/unsigned int变量赋值给 unsigned char变量是会发生字节截断(9位和高于9位的将被程序自动丢弃)

如:unsigned int a = 0xFFFFFFF7;

unsigned char b = (unsigned char)a;

此时b的值为 0xF7;


储存:unsigned char在计算机中使用补码存储,
例如:unsigned char a = 0xF7;
a在计算机中存储的方式为:10001001


char 型的值 [-128, 127]:
unsigned char 型的值 [0, 255]

--------------------------------

例子:
char a = 127;
char b = 128;
char c = 129;

char d = 255;
char e = 256;
char f = 257;

char g = -10;

printf("a = %d, b = %d, c = %d, d = %d, e = %d, f = %d\n", a, b, c, d, e, f);
printf("g = %d\n", g);

输出结果: a = 127, b = -128, c = -127, d = -1, e = 0, f = 1 

  g = -10


----------------------------

unsigned char w = 255;
unsigned char x = 256;
unsigned char y = 257;
unsigned char z = 258;

unsigned char zz = -10;

printf("w = %d, x = %d, y = %d, z = %d\n", w, x, y, z);
printf("zz = %d\n");

输出结果: w = 255, x = 0, y = 1, z = 2
  zz = 246



0 0
原创粉丝点击