-
強制類型轉換
鎖定
強制類型轉換轉換介紹
1、顯式強制類型轉換
C中顯式強制類型轉換很簡單,格式如下:
TYPE b = (TYPE) a;
int n=0xab65;
char a=(char)n;
上述強制類型轉換的結果是將整型值0xab65的高端一個字節刪掉,將低端一個字節的內容作為char型數值賦值給變量a,而經過類型轉換後n的值並未改變。
C++中強制類型轉換函數有4個:const_cast(用於去除const屬性),static_cast(用於基本類型的強制轉換),dynamic_cast(用於多態類型之間的類型轉換),reinterpreter_cast(用於不同類型之間的指針之間的轉換,最常用的就是不同類型之間函數指針的轉換)。
2、隱式強制類型轉換
隱式類型轉換髮生在賦值表達式和有返回值的函數調用表達式中。在賦值表達式中,如果賦值符左右兩側的操作數類型不同,則將賦值符右邊操作數強制轉換為賦值符左側的類型數值後,賦值給賦值符左側的變量。在函數調用時,如果return後面表達式的類型與函數返回值類型不同,則在返回值時將return後面表達式的數值強制轉換為函數返回值類型後,再將值返回,如:
int n;
double d=3.88;
n=d;//執行本句後,n的值為3,而d的值仍是3.88。
強制類型轉換自動類型轉換
在C語言中,自動類型轉換遵循以下規則:
1、若參與運算量的類型不同,則先轉換成同一類型,然後進行運算。
2、轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。
a、若兩種類型的字節數不同,轉換成字節數高的類型
b、若兩種類型的字節數相同,且一種有符號,一種無符號,則轉換成無符號類型
4、char型和short型(在visual c++等環境下)參與運算時,必須先轉換成int型。
5、在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度比左邊長時,將丟失一部分數據,這樣會降低精度,丟失的部分直接捨去。
強制類型轉換隱式自動轉換
1、執行算術運算時,低類型(短字節)可以轉換為高類型(長字節);例如: int型轉換成double型,char型轉換成int型等等;
強制類型轉換單參構造函數
- 參考資料
-
- 1. Python基本語法_強制數據類型轉換 .博客園.2017-02-04[引用日期2018-02-21]