類型轉換-C語言

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章