C語言中的整數自動轉換原則

2021-04-13 09:29:04 字數 708 閱讀 5525

有符號數與無符號數之間運算問題

以下實驗均在virual c++6中執行通過

這個問題測試是否懂得c語言中的整數自動轉換原則,有些開發者懂得極少這些東西。當表示式中存在有符號型別和無符號型別時所有的運算元都自動轉換為無符號型別。因此,從這個意義上講,無符號數的運算優先順序要高於有符號數,這一點對於應當頻繁用到無符號資料型別的嵌入式系統來說是丰常重要的。

首先進行乙個實驗,分別定義乙個signed int型資料和unsigned int型資料,然後進行大小比較:

unsigned int a=20;

signed int b=-130;

a>b?還是b>a?實驗證明b>a,也就是說-130>20,為什麼會出現這樣的結果呢?

這是因為在c語言操作中,如果遇到無符號數與有符號數之間的操作,編譯器會自動轉化為無符號數來進行處理,因此a=20,b=4294967166,這樣比較下去當然b>a了。

再舉乙個例子:

unsigned int a=20;

signed int b=-130;

std::cout<

減法和乘法的運算結果類似。

如果作為signed int型資料的b=-130,b與立即數之間操作時不影響b的型別,運算結果仍然為signed int型:

signed int b=-130;

std::cout<

C語言中的整數自動轉換原則

1 隱式轉換 c在以下四種情況下會進行隱式轉換 1 算術表示式中,低型別能夠轉換為高型別。2 賦值表示式中,右邊表示式的值自動隱式轉換為左邊變數的型別,並賦值給他。3 函式呼叫中引數傳遞時,系統隱式地將實參轉換為形參的型別後,賦給形參。4 函式有返回值時,系統將隱式地將返回表示式型別轉換為返回值型別...

C語言中型別的自動轉換

同一句語句或表示式如果使用了多種型別的變數和常量 型別混用 c 會自動把它們轉換成同一種型別。以下是自動型別轉換的基本規則 1.在表示式中,char 和 short 型別的值,無論有符號還是無符號,都會自動轉換成 int 或者 unsigned int 如果 short 的大小和 int 一樣,un...

c語言中的自動型別轉換

問題 輸入乙個值,若小於110 規定用100的1.1倍表示 輸出yes。最初 include intmian void return0 執行結果 修改後 include intmain void return0 執行結果 問題原因 1.1 b 表示式的值為double型別的110.000000。c語...