C 強制型別轉換

2021-08-07 06:00:17 字數 1145 閱讀 7115

強制型別轉換是把變數從一種型別轉換為另一種資料型別。例如,如果您想儲存乙個 long 型別的值到乙個簡單的整型中,您需要把 long 型別強制轉換為 int 型別。您可以使用強制型別轉換運算子來把值顯式地從一種型別轉換為另一種型別,如下所示:

(type_name) expression
請看下面的例項,使用強制型別轉換運算子把乙個整數變數除以另乙個整數變數,得到乙個浮點數:

#include main()

當上面的**被編譯和執行時,它會產生下列結果:

value of mean : 3.400000
這裡要注意的是強制型別轉換運算子的優先順序大於除法,因此 sum 的值首先被轉換為 double 型,然後除以 count,得到乙個型別為 double 的值。

型別轉換可以是隱式的,由編譯器自動執行,也可以是顯式的,通過使用強制型別轉換運算子來指定。在程式設計時,有需要型別轉換的時候都用上強制型別轉換運算子,是一種良好的程式設計習慣。

整數提公升是指把小於 int 或 unsigned int 的整數型別轉換為 int 或 unsigned int 的過程。請看下面的例項,在 int 中新增乙個字元:

#include main()

當上面的**被編譯和執行時,它會產生下列結果:

value of sum : 116
在這裡,sum 的值為 116,因為編譯器進行了整數提公升,在執行實際加法運算時,把 'c' 的值轉換為對應的 ascii 值。

常用的算術轉換是隱式地把值強制轉換為相同的型別。編譯器首先執行整數提公升,如果運算元型別不同,則它們會被轉換為下列層次中出現的最高層次的型別:

常用的算術轉換不適用於賦值運算子、邏輯運算子 && 和 ||。讓我們看看下面的例項來理解這個概念:

#include main()

當上面的**被編譯和執行時,它會產生下列結果:

value of sum : 116.000000
在這裡,c 首先被轉換為整數,但是由於最後的值是 double 型的,所以會應用常用的算術轉換,編譯器會把 i 和 c 轉換為浮點型,並把它們相加得到乙個浮點數。

C 強制型別轉換

四種型別可能很多人都常常忽略就象我一樣,但是有時還是比較有用的。不了解的建議看看,一些機制我也不是十分了解,只是將一些用法寫出來讓大家看看。強制轉化無論從語法還是語意上看,都是c 中最難看的特徵之一。但是基於c風格的轉化的語義的不明確性及其一些潛在問題。強制型別轉化最終還是被c 接受了。1.stat...

C 強制型別轉換

標準c 中主要有四種強制轉換型別運算子 const cast,reinterpret cast,static cast,dynamic cast等等。1 static cast a 將位址a轉換成型別t,t和a必須是指標 引用 算術型別或列舉型別。表示式static cast a a的值轉換為模板中...

C 強制型別轉換

關於強制型別轉換的問題,很多書都討論過,寫的最詳細的是c 之父的 c 的設計和演化 最好的解決方法就是不要使用c風格的強制型別轉換,而是使用標準c 的型別轉換符 static cast,dynamic cast。標準c 中有四個型別轉換符 static cast,dynamic cast,reint...