強制型別轉換
原c語言的形式:
(型別名)(表示式)
比如:
(double)a //把a轉換為double型別
(int)(a+b) //把a+b的值轉換為整型
需要注意的是:如果強制型別轉換的物件是乙個變數,那麼該變數不需要用括號括起來;但是如果物件是乙個包含多項的表示式,則表示式應該用括號括起來。
(int)(a+b) //把a+b的值轉換為整型
(int)a+b //把a的值轉換為整型,然後加b
c++新增加的形式:
型別名(表示式)
該形式的型別名不需要括括號,但是待轉換的物件不管是變數還是表示式都需要用括號括起來,比如:
int(x)
int(x+y)
#include using namespace std;
int main()
{ float x;
int i;
x = 3.6;
i = (int)x;
cout<<"x = "賦值過程中的型別轉換
如果賦值運算子兩側的型別不一致,但都是數值型或字元型,在賦值時可以自動進行型別轉換。
字元型與數值型的說明:
在c++基本的資料型別中,可以分為四類:整型,浮點型,字元型,布林型。其中數值型包括 整型與浮點型;字元型即為char。
(1)將浮點型資料賦值給整型變數時,捨棄其小數部分。
float x;
int i;
x = 3.6;
i = x;
cout<<"x = "(2)將整型資料賦值給浮點型變數時,數值不變,但是以指數形式儲存。
float x;
int i;
i= 3;
x = i;
cout<<"x = "(3)將double型資料賦值給float型變數時,注意數值範圍溢位。
float x;
double i;
i= 3.123456789e100;
x = i;
cout<<"x = "<(4)字元型資料可以賦值給整型變數,此時存入的是字元的ascii碼。
char x;
int i;
x = 'c';
i = x;
cout<<"x = "(5)將乙個int,short或long型資料賦值給乙個char型變數,只將低8位原封不動的送到char型變數中。
(6)將有符號型資料賦值給長度相同的無符號型變數,連同原來的符號位一起傳送。
強制型別轉換
關於強制型別轉換的問題,很多書都討論過,寫的最詳細的是c 之父的 c 的設計和演化 最好的解決方法就是不要使用c風格的強制型別轉換,而是使用標準c 的型別轉換符 static cast,dynamic cast。標準c 中有四個型別轉換符 static cast dynamic cast reint...
強制型別轉換
顯式轉換也稱為強制型別轉換 cast 包括以下列名字命名的強制型別轉換操作符 static cast dynamic cast const cast 和 reinterpret cast。命名的強制型別轉換符號的一般形式如下 cast name expression 其中 cast name 為 s...
強制型別轉換
c 風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。const cast,字面上理解就是去const屬性。static cast,命名上理解是靜態型別轉換。如int轉換成char。dynamic cast,命名上理解是動態型別轉換。如子類和父類之間的多型型別轉換。reinterprete...