c語言之 整型的隱式轉換與溢位檢測

2021-09-26 21:19:19 字數 398 閱讀 4732

我們可以通過下面的方式來檢測溢位:

if(a > int_max - b)

我們利用整型的最大值減去其中乙個數,然後與另乙個數進行比較。其中int_max定義在limit.h標頭檔案中,它表示整數的最大值。

當然,我們還可以通過下面的方式來檢測:

if((unsigned int)a + (unsigned int)b > int_max)

將兩個數都先轉換成無符號數進行計算,運算後的結果與int_max進行比較。

雖然我們有方法來檢測溢位,但是我們建議的是盡量去避免溢位的發生。可以通過下面的方式來避免:

當然對於不可避免的可能發生溢位的情況,我們需要進行檢測並進行後處理,而非忽略。

C 隱式轉換與顯式轉換

普通型別的轉換順序 隱式把char int和從short double。轉換可能會導致資料的丟失。自定義型別 有兩種函式可以進行隱式轉換,單引數建構函式 和 隱式型別轉換符。自定義型別可以用函式前 explicit 關鍵字,防止轉換。單個引數的建構函式,或可傳單個引數的類建構函式 example 1...

c語言隱式型別轉換

隱式型別轉換分三種,即算術轉換 賦值轉換和輸出轉換。1 算術轉換 進行算術運算 加 減 乘 除 取餘以及符號運算 時,不同型別數招必須轉換成同 一型別的資料才能運算,算術轉換原則為 整型提公升 對於所有比int小的型別,包括char,signed char,unsigned char,short,u...

C語言隱式型別轉換

隱式型別轉換分三種,即算術轉換 賦值轉換和輸出轉換。1 算術轉換 進行算術運算 加 減 乘 除 取餘以及符號運算 時,不同型別數招必須轉換成同 一型別的資料才能運算,算術轉換原則為 整型提公升 對於所有比int小的型別,包括char,signed char,unsigned char,short,u...