c c 自動型別轉換

2021-07-25 19:55:47 字數 728 閱讀 7579

學習各種語言,必須要有紮實的基礎知識。c和c++有很多靈活性的東西,所以在程式設計時一定要牢記這些知識點。

->不同型別資料間的混合運算中的自動型別轉換。

當乙個表示式中有不同的資料型別參加時,預設情況下會進行自動型別轉換。轉換過程當中以運算中最高端別為準。

其中橫向箭頭是必定發生的轉換。縱向箭頭是可以直接越級的。另外必定發生的轉換是因為資料長度的不同的,計算的時候目的是為了保證精度。

舉例:

int a = - 20;

unsigned char b = 20;

unsigned int c = 20;

int d = 0;

(1)   d = a/b ;//結果是-1

(2)   d = a/c ;// 結果你可能想不到,可以自己試驗,當然這裡整數除法還要考慮到餘數的捨去問題

(3)   d = a/(int)c;//結果是-1

這個例子中式(1)中b是自動轉換成int型的,橫向的轉換。式(2)的問題是unsigned int 實際比int級別要高,所以進行了自動轉換,將a轉換成了無符號型,如果這個值是正值,這裡不會有問題,但是負值就有問題了。所以式(2)要改寫成式(3)的樣式,即進行強制轉換。

強制型別轉換相對直白,但是必須注意轉換中可能會喪失的有效位元組。其實這種轉換是不安全的。

C C 型別轉換

include include using namespace std int main 程式的執行結果如下 註解 int a 相當於將浮點數a的位址的前sizeof int 個位元組當成int型的資料輸出。float a 1.0f在記憶體中的表示是0x3f800000,當 int a強制轉換時,會...

C C 型別轉換

如果乙個int型的變數值為5,則若使用強制型別轉換或者使用memcpy,則相當於直接copy記憶體中的值,若列印,則會列印5對應的ascii值 而若使用函式轉換,則函式會操作記憶體轉為ascii值的5,若列印,則直接為5。memcpy在一定程度上相當於強制型別轉換,但是可以制定拷貝的位元組大小,因此...

自動型別轉換

1 建構函式轉換 如果定義乙個建構函式,這個建構函式能把乙個型別的物件 或引用 作為它的單個引數,那麼這個建構函式允許編譯器執行自動型別轉換。class one class two void fun two int main 從上面的 我們可以看到通過建構函式可以 輕易的把乙個型別的變數轉換為另乙個...