牛客雜記 之型別轉換

2021-08-18 08:38:54 字數 1037 閱讀 8140

表示式會包含隱式型別轉換,它由編譯器自動執行,不需要程式設計師自己介入

*何時發生隱式型別轉換*

1.在混合型別的表示式中,運算元會被轉換為相同型別

eg: int a ; double b;

a>=b; 這時a被轉換為double

2.條件表示式會被轉換為bool型別

(1)條件操作符(? :)中的第乙個運算元

(2)邏輯非(!)、邏輯與(&&)、邏輯或(||)的運算元都是條件表示式

(3)if、while、do while 以及 for 的第二個表示式

3.初始化和賦值

4.在函式呼叫時,所傳遞的引數也可能發生隱式型別轉換

*如何轉換*

1.算術轉換 (保證在執行操作前,將二元操作符轉換為同一型別,並使表示式的值整型提公升)

32位機器:long 和 int 通常用乙個字長表示,此時轉換均為unsigned long

若表示式包括 signed 和unsigned int,signed會被轉換為unsigned

2.其他隱式轉換

(1)陣列名轉換為指向其中第乙個元素的指標

《任意資料型別的指標都可以轉換為void*,整型數值常量0可以轉換為任意型別指標》

(2)指標值可轉換為bool(若指標為0,轉換為flase;否則為true)

(3)算術型別和bool的轉換

(4)轉換與列舉型別

列舉型別物件或列舉成員將自動轉換為整型

C 之型別轉換

一 static cast型別轉換 static cast 應用於c 可以隱式轉換的型別之間,包括雙向隱式轉換和單向隱式轉換。例如 雙向隱式轉換 int a char b a static cast b 可以直接通過隱式轉換,轉換型別 a b b static cast a 可以直接通過隱式轉換,轉...

Effective C 之型別轉換

阿里面試過去好久了,可惜筆試做的太爛了,gg,不過還是要繼續完善自己的知識體系的。這個型別轉換的問題,被面試官問到了,然後一臉尼克楊的蒙蔽表情。其實早就找到了,這個問題,一直因為忙別的,沒有好好總結一下。effective c 條款27 儘量減少轉型動作 c 的設計目標之一是,保證 型別錯誤 絕不可...

More Effective C 之型別轉換

1.條款之優先考慮c 風格的型別轉換 c 通過引用4種新的型別轉換克服了c風格的型別轉換的缺點。這四種操作符是 static cast,const cast,dynamic cast以及reinterpret cast。大多數情況下,關於這些操作符應該知道的是,我們所習慣的寫法為 type expr...