unsigned char 存 char类型的数据

1、如下,
unsigned char i = 0;
i = -1;
printf("%d\n", i);

结果输出 255;

2、分析,出现这种情况,主要在于计算机中存储负数的特性导致的。
-1, 在内存中是以相反数的形式存的,实际如下 ,所以最终变成
255。
unsigned char 存 char类型的数据

3、在学c语言的时候,不同的数据类型都是有不同的范围的。很明显char 类型是 -128(0)~127,所以这些细节的东西平时也要多注意才行。

4、在写c、c++语言过程中,数据的存储是必不可少的一个环节。所以在存储字符或者十六进制数时,对数据类型的判断很关键

5、上述的存储,其实在使用时如果想打印出 -1 ,只需要加一个强转即可。如下:
printf("%d\n", (char)i);