类型转换
数据类型(窄->宽):char,short,int,long,float,long long,double
规定:同类型的数据无符号比有符号宽。
一、隐式(默认)转换:
1、窄类型转宽类型,左边补符号位,无符号数左边补零 (宽窄类型依据的是字节数长短)。
int main()
{
char a = 255; //-1
char b = -1;
int c = a; //-1
int d = b; //-1
char e = 100;
int f = e; //100
unsigned char g = 255;
int h = g; //255
return 0;
}
2、强制将宽类型转成窄类型,保留低数据
int main()
{
int a = 0x12345678;
char b = (char)a;
printf("%d,%x\n",b,b);
int c = 1000;
char d = (char)c;
int e = d;
printf("%d,%d,%08x,%08x\n",d,e,d,e);
return 0;
}
二、显式(强制)转换:显式类型转换又叫强制类型转换,直接将某数据转换成指定的类型,这在很多情况下可以简化转换。例如
int i;
...
i=i+9.999
按照隐式处理方式,首先将i转换为double型,然后相加结果为double型,再将double型转换为整型赋给i。
int i;
...
i=i+(int)9.999
这时直接将9.999转换成整型,然后与i相加,再把结果赋给i。这样可把二次转换简化为一次转换。
显示类型转换的方法是在被转换对象或表达式前加类型标识符,格式为:
(类型标识符)表达式