優先順序和型別轉換分析

2021-06-16 14:18:01 字數 883 閱讀 4548

易錯的優先順序

c語言隱式型別轉換

算術表示式中,低型別轉換為高型別;

賦值表示式中,表示式的值轉換為左邊變數的型別;

函式呼叫時,實參轉換為形參的型別;

函式返回值,return表示式轉換為返回值型別

例1char c = 'c';

short s = 0;

s = c;

printf("%d\n", sizeof(s+c));   //輸出為4

char

型和short

型參與運算時,必須先轉換成

int型

例2int i = -2;

unsigned int j = 1;

if( (i + j) >= 0 )

else

printf("i+j=%d\n", i + j);   //輸出i+j>=0回車i+j=-1

i在記憶體中補碼十六進製制形式為0xfffffffffffffffe,由於參與了算術運算,轉換為unsigned int型,加j等於0xffffffffffffffff,為unsigned int型,所以大於0;

printf中,%d是以int型輸出,0xffffffffffffffff是-1的補碼,所以會輸出-1。

型別轉換更多請看

運算優先順序 型別轉換

運算子優先順序 混合運算時資料型別的轉換 一些二元運算子 算術運算子 關係運算子 邏輯運算子 位運算子和賦值運算子 要求兩個運算元的型別一致,在算術運算和關係運算中如果參與運算的運算元型別不一致,編譯系統會自動對資料進行轉換 即隱含轉換 基本原則是將低型別資料轉換為高型別資料 混合運算時資料型別的轉...

型別轉換和算符優先順序

答案 47 解析 b a 2 計算時需要先把a轉換為整型,然後再與2相乘,計算出結果的後8位再賦給b。編輯器只所以這樣做,主要是適應各種型別的資料,而計算結果的正確與否,是否越界,是程式設計師的事情。unsigned char是無符號位元組型,char型別變數的大小通常為1個位元組 1位元組 8個位...

Css優先順序分析

初學者可能對優先順序的概念不甚明白,但我們在寫css的時候經常遇到這些問題。優先順序主要是避免樣式宣告中的衝突。當針對同一元素的同一屬性有多個宣告時,並且這些宣告 相同,權重相同,那麼,更明確的css宣告將佔主導地位。設想下面這個例子 複製內容到剪貼簿 p div.warning p div cau...