C語言運算子

2021-04-27 21:57:22 字數 1835 閱讀 9643

1級優先順序左結合

() 圓括號

下標運算子

-> 指向結構體成員運算子

. 結構體成員運算子

++ 字尾增量運算子

-- 字尾增量運算子

2級優先順序右結合

! 邏輯非運算子

~ 按位取反運算子

++ 字首增量運算子

-- 字首增量運算子

- 負號運算子

(型別) 型別轉換運算子

* 指標運算子

& 位址與運算子

sizeof 長度運算子

3級優先順序左結合

* 乘法運算子

/ 除法運算子

% 取餘運算子

4級優先順序左結合

+ 加法運算子

- 減法運算子

5級優先順序左結合

<< 左移運算子

>> 右移運算子

6級優先順序左結合

<、<=、>、>= 關係運算子

7級優先順序左結合

== 等於運算子

!= 不等於運算子

8級優先順序左結合

& 按位與運算子

9級優先順序左結合

^ 按位異或運算子

10級優先順序左結合

| 按位或運算子

11級優先順序左結合

&& 邏輯與運算子

12級優先順序左結合

|| 邏輯或運算子

13級優先順序右結合

? : 條件運算子

14級優先順序右結合

= += -= *= /= %= &= ^= |= <<= >>= 全為賦值運算子

15級優先順序左結合

, 逗號運算子

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。

所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。其它的都是從左至右結合。

具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函式相關,與陣列相關,而->及.是取結構成員。

其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的 真正的運算子中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。

接下來是算術運算子,*、/、%的優先順序當然比+、-高了。

移位運算子緊隨其後。

其次的關係運算子中,< <= > >=要比 == !=高乙個級別,不大好理解。

所有的邏輯操作符都具有不同的優先順序(單目運算子出外,!和~)

邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。

跟在其後的&&比||高。

接下來的是條件運算子,賦值運算子及逗號運算子。

在c語言中,只有4個運算子規定了運算方向,它們是&&、| |、條件運算子及賦值運算子。

&&、| |都是先計算左邊表示式的值,當左邊表示式的值能確定整個表示式的值時,就不再計算右邊表示式的值。如 a = 0 && b; &&運算子的左邊位0,則右邊表示式b就不再判斷。

在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的乙個進行求值。

賦值表示式則規定先對右邊的表示式求值,因此使 a = b = c = 6;成為可能。

C語言 運算子與 運算子

我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...

C語言 運算子和 運算子

變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...

c語言 運算子

除法運算,它的運算結果和運算物件的資料型別有關 1,兩個數都是int,則傷就是int 商有小數部分,則擷取小數部分 2,兩個數中只要出現浮點型的,則商也是浮點型,不擷取小數部分 如 16 5 3 16 5.0 3.2000 13 4 4 13 3 4 3 5 0 5 3 1 取模運算,它的運算結果必...