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;
}