在表示式中不同型別的資料會自動地轉換型別,以進行運算。有時程式編制者還可以利用強制型別轉換運算子將乙個表示式轉換成所需型別。例如:
(double)a (將a轉換成double型別)
(int)(x+y) (將x+y的值轉換成整型)
(float)(5%3) (將5%3的值轉換成float型)
強制型別轉換的一般形式為:
(型別名)(表示式)
注意:如果要進行強制型別轉換的物件是乙個變數,該變數可以不用括號括起來。如果要進行強制型別轉換的物件是乙個包含多項的表示式,則表示式應該用括號括起來。如果寫成
(int)x+y
則只將x轉換成整型,然後與y相加。
以上強制型別轉換的形式是原來c語言使用的形式,c++把它保留了下來,以利於相容。c++還增加了以下形式:
型別名(表示式)
如int(x)
或int(x+y)
型別名不加括號,而變數或表示式用括號括起來。這種形式類似於函式呼叫。但許多人仍習慣於用第一種形式,把型別名包在括號內,這樣比較清楚。
需要說明的是在強制型別轉換時,得到乙個所需型別的中間變數,但原來變數的型別未發生變化。例如:
(int)x
如果x原指定為float型,值為3.6,進行強制型別運算後得到乙個int型的中間變數,它的值等於3,而x原來的型別和值都不變。
【例2.4】強制型別轉換。
#include using namespace std; int main( ) { float x; int i; x=3.6; i=(int)x; cout<<"x="<
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...