在类型转换时
1.窄类型转宽类型,左边补符号位,无符号数左边补零
例:
char a=1;
int b=a;
数值大小没有改变,而数据类型改变了
2.强制将宽类型转成窄类型,保留低数据
int a=300;
char b=(char)a;
printf("%d\n%d\n",a,b);
a=300;
300的2进制为:
b=44;
而char类型为一个字节
保留了低数据
所以b= 44。
例:
char a = 255;//-1 (2进制255为11111111,-1也是1111111.所以为-1)
char b = -1;
int c = a;//-1 (窄类型变成宽类型,补符号位,为0,不变)
int d = b;//-1
char e = 100;
int f = e;//100 (窄类型变成宽类型,补符号位,为0,不变)
unsigned char g = 255;
int h = g;//255