1、自增自減
(1)前置運算:”先變後用“ 如++i;
後置運算:”先用後變“ 如i--;
例如:
int i = 5; y1 = ++i; y2 = i++;
結果:y1 = 6;y2=6;i=7.
(2)前置和後置還有一個區別:前置可以用在等號的兩邊;而後置只能位於等號的右邊。
這是因為前置返回操作數本身,後置返回的是一個臨時變量。
int mian() { int a = 3; a += (++a); //a=7 a += (a++); //a=16 (++a) += (a++); //a=35 (a++) += a; //不正確 }
2、關系與邏輯運算符
(1)關系運算符(四種)和邏輯運算符(三種):返回的是布爾類型的結果
(2)關系的優先級 > 邏輯運算符
3、位運算
(1) 共六種:&、|、^、~、《(左移)、》(右移)
異或^:僅當兩位不相同時,結果才是1。
(2)進制轉換
[十進制轉二進制]
正十進制轉二進制:除二取余倒排序。一直除到商等於1或0時為止.
所以,52對應的二進制數是:110100。
負整數轉換為二進制:取反加一
解釋:將該負整數對應的正整數先轉換成二進制,然後對其“取補”,再對取補後的結果加1即可。
例如要把-52換算成二進制:
1.先取得52的二進制:00110100
2.對所得到的二進制數取反:11001011
3.將取反後的數值加一即可:11001100
即:(-52)10=(11001100)2
[十進制轉十六進制]:除16取余倒排序。
十六進制數的表示:前綴法:0xA1
後綴法:A1H
[二進制和十六進制轉十進制]
算法一樣。都是 5*16^1+3*16^0 這種形式
(3)移位運算
規則:移位後,丟棄移出去的數,移後空白位補位規則如下:
int 左移低位補零,右移高位補符號位
unsighed int 低位高位都補零
4、類型轉換
(1)賦值轉換:將一種類型的值賦給另一種類型的變量。
int a = 3.14;
(2)表達式轉換
a、整型提升
b、運算時轉換
同一類型的有符號和無符號類型所占的內存空間相同。
(3)顯示轉換
(4)其他轉換
5、運算優先級
(1)括號、下標和結構體成員優先級最高
(2)單目高於雙目;算術雙目高於其他雙目
(3)算術>移位>關系>位運算>邏輯
(4)三目運算只有一個逗號,低於邏輯
(5)賦值比”,“高。