C 不同型別變數進行運算時的型別轉換總結

2021-09-13 22:04:32 字數 708 閱讀 2885

int型乘以double型,結果是double型(int型轉換為double型再運算);

double型轉int型,結果是int型(捨去小數點及其後的數字)。

自動轉換遵循以下規則:

若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。

轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。

a. 若兩種型別的位元組數不同,轉換成位元組數高的型別

b. 若兩種型別的位元組數相同,且一種有符號,一種無符號,則轉換成無符號型別

所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表示式,也要先轉換成double型,再作運算。

char型和short型參與運算時,必須先轉換成int型。

在賦值運算中,賦值號兩邊量的資料型別不同時,賦值號右邊量的型別將轉換為左邊量的型別。如果右邊量的資料型別長度左邊長時,將丟失一部分資料,這樣會降低精度,丟失的部分按四捨五入向前捨入。

例如:int 和double屬於不同型別,轉換遵循低精度到高精度轉換,所以int先轉成double型就算,計算結果就是double型。

但是double型轉int型不是四捨五入,而是將小數點後的數值全部捨去,如「1.99」轉化為int型就變成「1」。

如果要輸出的資料是「xx.0」的形式,c++輸出時會自動將「.0」捨去,只輸出xx。

參考文獻

[1]

不同型別的資料進行運算

今天同學在筆試中遇到乙個問題乙個無符號的數加乙個有符號的負數最後的結果是什麼?例子如下 int a 19 unsigned int b 10 if a b 0 else 問的其實就是有符號的和無符號的相加最終的型別是什麼型別?c 提供了乙個叫t include 用於檢視資料的內型標頭檔案 具體使用如...

不同型別資料之間在進行運算時,結果型別應該如何確定

不同型別的資料進行運算,如果乙個運算子兩側的資料型別不同,需要先自動進行型別轉換,使兩者具有同一型別,然後進行運算,現將規律總結如下 系統有預設的轉化規則,就是從精度底的轉化為精度高的,避免計算時精度的丟失 具體轉換規則如下 char short int unsigned long unsigned...

不同型別的資料進行比較

參考5.built in types中的說明,cpython按照如下規則進行比較 自己的總結 任何兩個物件都可以比較 相同型別的物件 例項 如果是數字型 int float long complex 則按照簡單的大小來比較 如果是非數字型,且類 型 中定義了 cmp 含 gt lt 等 則按照 cm...