討論幾種常見的類型轉換
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
也就是說,高位轉低位是直接截取