C語言中都有那些運算子?

千鋒教育官方發表於2019-08-22

 

(1) 算術運算子(+, -, *, /, %, ++, --)

(2) 關係運算子(<, >, <=, >=, ==, ![KG-*8]=)

(3) 邏輯運算子(!, &&, ||)

(4) 位運算子(<<, >>, ~, |, ^, &)

(5) 賦值運算子(= 及其雙目運算子的擴充套件賦值運算子)

(6) 條件運算子(? :)

(7) 逗號運算子(,)

(8) 指標運算子(*, &)

(9) 求位元組數運算子(sizeof)

(10) 強制型別轉換運算子(( 型別))

(11) 分量運算子(·, ->)

(12) 下標運算子( )

(13) 圓括號運算子(( ))

  算術運算子和賦值運算子

說明: 

        (1) +, -, *, / 與數學中運算類似, 先乘除後加減, 也就是按優先順序順序進行運算,優先順序小的先運算。要改變運算順序只要加括號就可以了,括號全部為圓括號,必須注意括號的配對,它們適用於C 的幾乎全部資料型別( 指標類除外) 的各種運算(++, -- 除外) 。除法運算子(/) 在用於兩個整型資料運算時,其運算結果也是整數,餘數總是被截掉。如1/2 的結果是0 10/3 的結果是3

(2) 求餘運算子(%) 僅用於整型資料,不能用於實型和雙精度實型。它的作用是取整數除法的餘數。如1%2 的結果是1 10%3 的結果也是1  

        (3) 賦值運算子(=) 是將右邊表示式的值賦給左邊的變數。 賦值運算子左邊必須是變數等有存貯單元的元素,而不能是常量或表示式。如x=x+1 是合法的,即把x 的值加上1 後再賦給x ,而x+1=x 卻是非法的,因為x+1 不是一個存貯單元, 不能被賦以值。賦值號有別於數學中的等號,這一點是要注意的。

(4) ++, -- 僅用於整型變數,指標變數。用於整型變數在原值上加1 或減1 ;用於指標變數是取下一地址或上一地址。 關於指標部分的使用在第八章中介紹。 1 和減1 運算子用在表示式中時,寫法是有差別的:如果運算子在運算元前面, 則在表示式引用該運算元前,先對其作加1 或減1 運算; 如果運算子在運算元之後,則先引用該運算元,然後再對它作加1 或減1 運算。考慮以下程式:

main( )

  { int x, y; 

 x=10; 

 y=++x;

 printf(″%d, %d\n″, x, y); 

  }

運算結果為 

11 11

此時y 的值和x 的值都為11 然而換一種寫法: 

 main( )

   { int x, y; 

 x=10; 

 y=x++

 printf(″%d, %d\n″, x, y); 

   }

執行結果為 

11 10

此時y 的值是10 ,而x 的值自增後為11 。上述兩種情況x 都變成了11 ,而y 的值卻不同。它們的差別只在於給x 1 的時機不同。 此時賦值即為引用。 再如進行輸出操作時,有以下程式段: 

 x=10; 

 printf(″x=%d\n″, ++x); 

執行結果為x=11 ,執行其下一條語句時x 也是11 而程式段:

 x=10; 

 printf(″x=%d\n″, x++)  

       (5) +, -, *, /, % 可以與賦值號= 組成複合賦值運算子+=, -=, *=, /=, %=  

       a=a+b 可以寫成a+=b a=a*b 可以寫成a*=b 。其餘類推。 這樣書寫簡練,執行速度快,也提高了編譯效率。

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69914734/viewspace-2654629/,如需轉載,請註明出處,否則將追究法律責任。

相關文章