C C 中的型別轉換

2021-07-14 03:51:29 字數 757 閱讀 4740

從c轉向c++時,型別轉換出現了一些疑惑,查閱了一些資料和博文,整理如下。

1. 隱式型別轉換

這類轉換主要發生在型別不同的賦值和計算過程中,c/c++中均存在

int ival = 3;

double dval = 3.124;

ival + dval //ival被提公升為double型別

int

*p = 0; //

0被轉換為了int* 型別

ival = dval; // dval被轉換為了int型別

還有很多類似的例子,比如傳入函式的實參時,實參和形參型別不一致,實參轉換為形參型別;函式返回值和return表示式型別不一致,轉換為返回值等等

2. 顯示型別轉換

也被稱為強制轉換,顧名思義就是表示式中表明了如何轉換。

c++風格:static_cast, dynamic_cast, reinterpret_cast, const_cast

下面對c++中幾個轉換型別做一些說明

static_cast

dynamic_cast

const_cast

使用const_cast機會非常少,如果寫**需要用到const_cast,很大程度上說明**設計有問題!

reinterpret_cast

總結來說:

C C 中的型別轉換

標準c 為了加強型別轉換的可視性,引入了四種命名的強制型別轉換操作符 static cast reinterpret cast const cast dynamic cast static cast用於非多型型別的轉換 靜態轉換 編譯器隱式執行的任何型別轉換都可用static cast,但它不能用於...

C C 的型別轉換

c語言的型別轉換分為隱式型別的轉換和強制型別的轉換。隱式型別轉換 適用於相近型別的轉換 int main return 0 int main 因為c語言的隱式型別轉換坑很大,標準c 為了加強型別轉換的可視性,引入了四種命名的強制型別轉換操作符 static cast 相近型別的轉換 static c...

C C 型別轉換

include include using namespace std int main 程式的執行結果如下 註解 int a 相當於將浮點數a的位址的前sizeof int 個位元組當成int型的資料輸出。float a 1.0f在記憶體中的表示是0x3f800000,當 int a強制轉換時,會...