1.c語言運算子的分類?
1)算術運算子:用於各類數值運算,包括加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%)、自增(++)、自減(--)
2)關係運算子:用於比較運算,包括大於(>)、小於(<)、等於(==)、大於等於(>=)、小於等於(<=)和不等於(!=)
3)邏輯運算子:用於邏輯運算,包括與(&&)、或(||)、非(!)
4)位操作運算子:參與運算的量,按二進位制位進行運算,包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)
5)賦值運算子:用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=、-=、*=、/=、%=)和復合位運算賦值(&=、|=、^=、>>=、<<=)
6)條件運算子:這是乙個三目運算子,用於條件求值(?:)
7)逗號運算子:用於把若干表示式組合成乙個表示式(,)
9)求位元組運算子:也能給予計算資料型別所佔的位元組數(sizeof)
10)特殊運算子:有括號()、下標、成員(->、.)
2.有關運算子的優先順序
!>算術運算子》關係運算子》&&>||>條件運算子》賦值運算子》逗號運算子
3.一些容易出錯的優先順序問題
1).的優先順序高於*
例:*p.f 應是*(p.f)對p取f偏移作為指標,然後進行接觸引用操作。
2)高於*
例:int*ap 應是int*(ap)ap是個元素為int指標的陣列
3)函式()高於*
例:int*fp() 應是int*(fp())fp是個函式,返回int*
4)==高於位操作
例:(val&mask!=0) 應是val&(mask!=0)
5)==高於賦值符
例:c=getchar()!=eof 應是c=(getchar()!=eof)
6)算術運算子高於移位運算子
例:msb<<4+lsb 應是msb<<(4+lsb)
7)逗號運算子優先順序最低
4.條件運算子的基本使用方法
一般形式: 表示式1?表示式2:表示式3
求值規則為:如果表示式1為真,則以表示式2的值作為條件表示式的值,否則以表示式2的值作為整個條件表示式的值
5.使用條件表示式應該注意什麼?
1)條件運算子的運算優先順序低於關係運算子和算術運算子,但高於賦值符
2)條件運算子「?」和「:」是一對運算子,不能分開單獨使用
3)條件運算子的結合方向是從右至左
6.++、--操作符
i++:先將i的值帶入表示式進行運算,再將i的值+1
++i:先將i的值加1,再將i的值帶入表示式進行運算
i--,--i與上述規則相同
7.位運算
1.按位與(&)應用
1)清零特定位(mask中特定位置0,其他位為1,s =s&mask)
2)取某數中指定位(mask中特定位置1,其他位為0,s = s&mask)
2.按位或(|)應用
1)指定位置1,其餘位不變(mask中特定位置1,其他位為0,s = s|mask)
3.按位異或(^)應用
1)使特定位的值取反(mask中特定位置1,其他位為1,s = s^mask)
2)不引入第三變數,交換兩個變數值
8.使用位操作的優點?
1)可以減少減法和取模的運算,提高運算效率
2)在嵌入式系統的程式設計中,它的另乙個最典型的且使用十分廣泛的是位間的與(&)、或(|)、非(~)操作。
9.運算子的結合方向?
左到右:特殊運算子,逗號運算子,算術運算子中加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%),關係運算子,邏輯運算子中與(&&)、或(||),位操作運算子中位與(&)、位或(|)、位異或(^)、左移(<<)、右移(>>),
右到左:算術運算子中自增(++)、自減(--), 邏輯運算子中非(!),位操作運算子中位非(~),賦值運算子,條件運算子,指標運算子,求位元組運算子
10.運算子的目分類
單目:算術運算子中自增(++)、自減(--),邏輯運算子中非(!),位操作運算子中位非(~),指標運算子
雙目:算術運算子中加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%),關係運算子,邏輯運算子中與(&&)、或(||),位操作運算子中位與(&)、位或(|)、位異或(^)、左移(<<)、右移(>>),賦值運算子
三目:條件運算子
一些運算子
int a 3 int b a 先把a的值賦給b,a再自增 int c a a先自增,再把值賦給c system.out.println a system.out.println b system.out.println c 結果輸出 535 冪運算,計算2 3 double pow math.po...
C 的一些運算子
參見 c 高階程式設計 第四版 is 運算子可以檢查物件是否與特定的型別相容。相容 表示物件是該型別,或者派生於該型別。例如,要檢查變數是否與 object 型別相容 int i 10 if i is object int和從 object 繼承而來的其他 c 資料型別一樣,表示式 i is obj...
一些特殊運算子的理解
1 in eg x in o 檢測o物件是否擁有x屬性 in 運算子 in的左側是字串或者可以轉為字串 右側是物件 可以檢測繼承的屬性 注意的是對陣列檢測的是下標值 2 instanceof 左側是物件,右側是標識物件的類即建構函式 如果左側不是物件則返回false,右側不是函式則丟擲乙個型別錯誤異...