LinuxC關於運算子的一些問題

2021-08-09 02:30:47 字數 2160 閱讀 2735

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,右側不是函式則丟擲乙個型別錯誤異...