C語言操作符

C語言操作符有以下分類:

算數操作符   移位操作符   位操作符   賦值操作符   單目操作符   關係操作符   邏輯操作符   條件操作符   逗號操作符   下標引用 、函數調用和結構成員

一、算數操作符

加(+)  減(-)  乘(*)  除(/)  求模(%)

1)%操作符只能用於兩個整數之間的運算,其他的操作符可以作用於整數和浮點數。

2)對於/操作符,當兩個操作數都是整數時執行整數除法。只要有一個操作數是浮點數就是浮點數除法。

3)%操作符參與運算的兩個整數返回的是整除之後的餘數,/操作符參與運算的兩個整數返回的是整除之後的商。

二、移位操作符

左移操作符(<<):左邊拋棄,右邊補0

右移操作符(>>):1)邏輯移位--左邊用0填充,右邊丟棄

                               2)算術移位:左邊用原該值的符號位填充,右邊丟棄

三、位操作符

按位與(&)  按位或(|)  按位異或(^)

1)位操作符他們的操作數必須都是整數。

2)參與運算的操作數,是將他們的二進制(比特位)進行逐位運算。

3)&操作符只有當兩個比特位都是1時與的結果才爲1,以外均爲0。

4)| 操作符只有當兩個比特位都是0時或的結果才爲0,以外均爲1。

5)^操作符參與運算的是兩個相同的操作數結果就會清零,任一個數與0按位異或得到的二進制序列不變,與1按位異或得到的二進制序列每位均取反。

四、賦值操作符

只有賦值操作符(=)可以讓你改變一個你之前不滿意的值。任何兩個操作數參與運算時只要不經過賦值運算,這兩個操作數其自身的值是不會發生變化的!

注意:賦值運算和初始化是兩個不同的概念!初始化時(int i=0;),系統會爲這個變量(i)開闢空間同時默認這是空間的值(0)。而賦值運算時(i=1;),是將這個空間的值改變(將1改爲0)。

複合賦值符:+=   -=   *=   /=   %=   >>=   <<=   &=   |=   ^=  

五、單目操作符

邏輯反(!)  負值(-)  正值(+)  取地址(+)  求操作數的類型長度(sizeof)  對一個數的二進制數按位取反(~)  自增運算(++)  自減運算(--)  間接訪問操作符、解引用操作符(*)  強制類型轉換((類型))

1)以上操作符參與運算的只需要一個操作數即可。

2)自增操作符分爲前置和後置,前置是先將值進行+1操作,然後再去用這個數。後置是先將數拿出來去使用,使用完了之後再進行+1操作。

3)強制類型轉換僅僅改變了空間的類型,並沒有改變這個數據,和轉化是不同的概念。

4)切記sizeof是操作符,並不是一個函數。

六、關係操作符

大於(>)  大於等於(>=)  小於(<)  小於等於(<=)  相等(==)  不相等(!=)

1)對浮點數來說要特別注意,並沒有嚴格意義上的相等。它是用精度範圍來判斷兩個數是相等的。

2)執行相等操作(==)時,可能會不小心寫成賦值操作(=)。例如:if(x=5)//處理事務

因此建議做相等比較時,將常數寫在左邊(5==x)。例如:if(5==x)//處理事務

這樣不小心輸錯成if(5=x),系統就能在編譯時報錯

七、邏輯操作符

邏輯與(&&)  邏輯或(||)

1)&&操作符前後兩個操作數均爲真結果才爲真。

2)|| 操作符前後兩個操作數均爲假結果才爲假。

3)邏輯與和按位與是不同的概念,前者的結果是布爾型,不是1(真)就是0(假),而後者是將二進制進行逐位運算的,結果是個數。

八、條件操作符

exp1 ? exp2 : exp3 ;

三目運算符:當exp1爲真時結果爲exp2,假時結果爲exp3

類似於:if(exp1) {exp2} else {exp3}

九、逗號表達式

exp1,exp2,exp3,……expN

1)逗號表達式,就是用逗號隔開多個表達式。

2)逗號表達式,從左向右依次執行。整個表達式的結果是最後一個表達式的結果。

十、下標引用、函數調用和結構成員

1)[ ]

操作數:一個數組名+一個索引值

2)( )

函數調用操作符

一個或者多個操作數:第一個操作數是函數名,剩餘的操作數就是傳遞給函數的參數。

3)訪問一個結構體的成員

  .  結構體 . 成員名(通過結構體直接訪問內部元素)

  ->  結構體指針 -> 成員名(通過指針訪問結構體內部元素)

注意:結構體、數字、指針都屬於數據類型,只不過是自定義數據類型

發佈了32 篇原創文章 · 獲贊 62 · 訪問量 7832
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章