易錯的優先順序
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...