C的強制轉換和C 的強制轉換

2021-06-01 19:16:13 字數 1059 閱讀 5101

c的強制轉換:

(type)其中,type為型別描述符,如int,float等。為表示式。經強制型別轉換運算子運算後,返回乙個具有type型別的數值,這種強制型別轉換操作並不改變運算元本身,運算後運算元本身未改變,例如:   int nvar=0xab65;   char cchar=char (nvar);   上述強制型別轉換的結果是將整型值0xab65的高階兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cchar,而經過型別轉換後nvar的值並未改變。

c++的強制轉換:

static_cast < type-id > ( expression )   該運算子把expression轉換為type-id型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法:   

①用於類層次結構中基類(父類)和派生類(子類)之間指標或引用的轉換。   進行上行轉換(把派生類的指標或引用轉換成基類表示)是安全的;   進行下行轉換(把基類指標或引用轉換成派生類表示)時,由於沒有動態型別檢查,所以是不安全的。   

②用於基本資料型別之間的轉換,如把int轉換成char,把int轉換成enum。這種轉換的安全性也要開發人員來保證。   

③把空指標轉換成目標型別的空指標。   

④把任何型別的表示式轉換成void型別。   注意:static_cast不能轉換掉expression的const、volitale、或者__unaligned屬性。

dynamic_cast< type-id > ( expression ) 主要用於類層次間的上行轉換和下行轉換,還可以用於類之間的交叉轉換。   

1.在類層次間進行上行轉換時,dynamic_cast和static_cast的效果是一樣的;   

2.在進行下行轉換時,dynamic_cast具有型別檢查的功能,比static_cast更安全。

const_cast(a)  

去掉型別中的常量,除了const或不穩定的變址數,t和a必須是相同的型別。 

reinterpret_cast(a)  

任何指標都可以轉換成其它型別的指標,t必須是乙個指標、引用、算術型別、指向函式的指標或指向乙個類成員的指標。 

C 強制轉換

c風格的強制型別轉換 type cast 很簡單,不管什麼型別的轉換統統是 type b type a c 風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。const cast,字面上理解就是去const屬性。static cast,命名上理解是靜態型別轉換。如int轉換成char。dy...

c 強制轉換

隱式轉換 char int 顯示轉換 c風格轉換 base b new test test t test b c 風格 static cast 編譯時檢查,如果不是派生關係,則編譯錯誤 dynamic cast 執行時檢查,如果不是派生關係,則返回null rtti reinterpret cast...

c 強制轉換

c 強制轉換總結 c語言的強制型別轉換,主要用於基礎資料之間的轉換 語法規則 type id expression 轉換格式1 type id expression 轉換格式2 c 除了c語言的強制型別轉換外,新增了四種強制型別轉換 static cast dynamic cast const ca...