C/C++ 基本數據類型轉換

討論幾種常見的類型轉換

 

1,int和double的轉換

int轉double相當於乘以1.0

double轉int相當於向下取整函數

 

2,相同位數的整數,有符號和無符號的轉換

代碼:

    int x=-1;
    cout<<unsigned int(x)<<"   ";
    unsigned int y=4294967295;
    cout<<int(y);

輸出:

4294967295   -1

也就是說,相同位數的整數,相互轉換的時候,不改變每一位的值,直接按照有無符號的自己的理解來理解就行

 

3,不同位數的整數之間進行轉換

以char和int爲例

PS:程序員一定要理解char就是整數類型這個思想。

(1)有符號低位轉高位

    char c='\0';
    cout<<int(c)<<"  ";
    cout<<int(--c)<<"  ";
    c='\0';
    cout<<unsigned int(c)<<"  ";
    cout<<unsigned int(--c)<<"  ";

輸出:

0  -1  0  4294967295

也就是說,有符號低位轉高位是填充首位,即以1開頭的數就補上很多1,以0開頭的數就補上很多0

(2)無符號低位轉高位

    unsigned char c='\0';
    cout<<int(c)<<"  ";
    cout<<int(--c)<<"  ";
    c='\0';
    cout<<unsigned int(c)<<"  ";
    cout<<unsigned int(--c)<<"  ";

輸出:

0  255  0  255

也就是說,無符號低位轉高位是填充0

(3)高位轉低位

    long long x=(long long(1)<<63);
    cout<<x<<"  "<<int(x);

輸出:

-9223372036854775808  0

也就是說,高位轉低位是直接截取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章