表示式會包含隱式型別轉換,它由編譯器自動執行,不需要程式設計師自己介入
*何時發生隱式型別轉換*
1.在混合型別的表示式中,運算元會被轉換為相同型別
eg: int a ; double b;2.條件表示式會被轉換為bool型別a>=b; 這時a被轉換為double
(1)條件操作符(? :)中的第乙個運算元
(2)邏輯非(!)、邏輯與(&&)、邏輯或(||)的運算元都是條件表示式
(3)if、while、do while 以及 for 的第二個表示式
3.初始化和賦值
4.在函式呼叫時,所傳遞的引數也可能發生隱式型別轉換
*如何轉換*
1.算術轉換 (保證在執行操作前,將二元操作符轉換為同一型別,並使表示式的值整型提公升)
32位機器:long 和 int 通常用乙個字長表示,此時轉換均為unsigned long2.其他隱式轉換若表示式包括 signed 和unsigned int,signed會被轉換為unsigned
(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...