1.类型转换
1.1自动转换
高 double ←← float
↑ ↑
↑ long
↑ ↑
↑ unsigned
↑ ↑
低 int ←← char,short
规则:在进行自动类型转换的时候,如果原来的数是无符号数,那么在扩展的时候,高位填充的是0;如果是有符号数,那么高位填充的时符号位!这一点有点类似于“>>”操作符,当无符号数右移的时候,高位填充的是0;有符号数右移的时候,高位填充的是符号位。
#include <stdio.h>
int main()
{
char v16s;
unsigned char v16u;
int v32s;
unsigned int v32u;
v16s=0xfb;
v16u=(unsigned char)v16s;
v32s=(int)v16s;
v32u=(unsigned int)v16s;
printf("v16u:%x,v32s:%x,v32u:%x\n",v16u,v32s,v32u);
v16s=0x0b;
v32s=(int)v16s;
v32u=(unsigned int)v16s;
printf("v32s:%x,v32u:%x\n",v32s,v32u);
v32s=0xfffffffb;
v16s=(char)v32s;
v16u=(unsigned char)v32s;
printf("v16s:%x,v16u:%x\n",v16s,v16u);
v16s=0xfb;
v16u=0xfb;
v32s=(int)v16s;
v32u=(unsigned char)v16u;
printf("v32s:%x,v32u:%x\n",v32s,v32u);
return 0;
}