c語言中的運算子優先順序和結合性c語言中指標運算子和自增運算子的優先順序

2021-03-06 11:01:25 字數 6059 閱讀 5107

1樓:

32個運算子:

1級優先順序 左結合

() 圓括號

下標運算子

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

. 結構體成員運算子

2級優先順序 右結合

! 邏輯非運算子

~ 按位取反運算子

++ 字首增量運算子

-- 字首增量運算子

+ 正號運算子

- 負號運算子

(型別) 型別轉換運算子

* 指標運算子

& 地址與運算子

sizeof 長度運算子

3級優先順序 左結合

* 乘法運算子

/ 除法運算子

% 取餘運算子

4級優先順序 左結合

+ 加法運算子

- 減法運算子

5級優先順序 左結合

<< 左移運算子

>> 右移運算子

6級優先順序 左結合

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

7級優先順序 左結合

== 等於運算子

!= 不等於運算子

8級優先順序 左結合

& 按位與運算子

9級優先順序 左結合

^ 按位異或運算子

10級優先順序 左結合

| 按位或運算子

11級優先順序 左結合

&& 邏輯與運算子

12級優先順序 左結合

|| 邏輯或運算子

13級優先順序 右結合

? : 條件運算子

14級優先順序 右結合

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

15級優先順序 左結合

, 逗號運算子

回答好幾遍了=。=這些內容

2樓:信念_克服

這個 譚浩強的書上很明確

3樓:鹿同泰麗

1級(左結合)

()圓括號;下標運算子;->指向結構體成員運算子;.

結構體成員運算子.。

2級(右結合)

!邏輯非運算子;~按位取反運算子;++字首增量運算子;--字首減量運算子;+正號運算子;-負號運算子;(型別)型別轉換運算子;*指標運算子;&地址運算子;sizeof長度運算子。

3級(左結合)

*乘法運算子;/除法運算子;%取餘運算子。

4級(左結合)

+加法運算子;-減法運算子。

5級(左結合)

《左移運算子;>>右移運算子。

6級(左結合)

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

7級(左結合)

==等於運算子;!=不等於運算子。

8級(左結合)

&按位與運算子。

9級(左結合)

^按位異或運算子。

10級(左結合)

|按位或運算子。

11級(左結合)

&&邏輯與運算子。

12級(左結合)

||邏輯或運算子。

13級(右結合)

?:條件運算子。

14級(右結合)

=、+=、

-=、*=、

/=、%=、

&=、^=、

|=、<<=、

>>=賦值運算子。

15級(左結合)

,逗號運算子。

4樓:曾蕊公新煙

初(1)、單(右結合

)(1)、算(3)、關(2)、邏(5)、條(右結合)(1)、賦(右結合)(1)、逗(1);(未註明的未左結合)共15級初級1、()

圓括號、

下標運算子

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

結構體成員運算子

單目運算 2、

!邏輯非運算子

、~按位取反運算子、++

字首增量運算子

、--字首增量運算子、+

正號運算子、-

負號運算子

、(型別)

型別轉換運算子

、*指標運算子

、 &地址與運算子

、sizeof

長度運算子

算術運算子 3、*

乘法運算子

、 /除法運算子

、%取餘運算子

4、 +

加法運算子

、-減法運算子

5、<<

左移運算子

、>>右移運算子

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

等於運算子、!=

不等於運算子

邏輯運算子、

8、&按位與運算子

9、^按位異或運算子

10、|

按位或運算子

11、&&

邏輯與運算子

12、||

邏輯或運算子

條件運算子13、 ?:

條件運算子

賦值運算子14、

=、+=、

-=、*=、

/=、%=、

&=、^=、

|=、<<=、

>>=逗號運算子 15、,

c語言中指標運算子*和自增運算子++的優先順序

5樓:慶年工坊

c語言中自增運算子++作為字尾的話比指標運算子*的優先順序高,作為字首的話與指標運算子*平級。

c語言的運算子主要用於構成表示式,同一個符號在不同的表示式中,其作用並不一致。下面按計算的優先順序,分別說明不同作用的表示式。需要特別指出,在c語言標準中,並沒有結合性的說法。

相同優先順序運算子,從左至右依次運算。注意字尾運算優先順序高於字首。因此++i++應解釋為++(i++)。

而與或非的運算優先順序都不一樣,因此a && b || b && c解釋為(a && b)|| (b && c)

合理使用優先順序可以極大簡化表示式。

基本表示式 1級

基本表示式(primary expressions),主要是用於運算子之間,做為運算數。

標識,常量,字串文字量,優先順序提升表示式最優先執行。

優先順序提升表示式是指圓括號包圍的表示式,如「( expression )」

字尾表示式 2級

postfix-expression [ expression ],陣列下標運算。

postfix-expression (argument-expression-list),函式呼叫,括號內的引數可選。

postfix-expression . identifier,成員訪問,

postfix-expression -> identifier,成員訪問,->號之前應為指標。

postfix-expression ++,字尾自增

postfix-expression --,字尾自減

( type-name )

( type-name ) 複合初始化,c99後新增。

單目/一元運算 3級

++ unary-expression 字首自增

-- unary-expression 字首自減

unary-operator cast-expression 單目轉型表式式, 包括 取地址& ,提領 * , 正號+ ,負號- 位反~ 邏輯否!。

sizeof unary-expression 求型別長度,對表示式求型別長度

sizeof ( type-name ) 求型別長度

強制型別表示式 4級

(type-name ) cast-expression,強制表示式成為type-name指定的型別。

乘法表示式 5級

「 * 」 乘法運算子;「 / 」除法運算子;「 % 」 取餘運算子。

加法運算子 6級

「 + 」加法運算子;「 - 」減法運算子。

移位運算子 7級

<< 左移運算子;>> 右移運算子。

關係運算子 8級

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

相等運算子 9級

「 == 」等於運算子;「 != 」不等於運算子。

位與運算子 10級

「 & 」按位與運算子

位異或運算子 11級

「 ∧ 」按位異或運算子(bitwiseexclusive or operator)。

位或運算子 12 級

「 | 」按位或運算子(bitwiseinclusive or operator)。

邏輯與運算子 13級

「&&」邏輯與運算子。

邏輯或運算子 14 級

「 || 」邏輯或運算子。

三元條件運算子 15級

? :條件運算子。

賦值運算子 16 級

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

逗號運算子 17級

「,」逗號運算子。

6樓:小夏在深圳

運算子的優先順序確定表示式中項的組合。這會影響到一個表示式如何計算。某些運算子比其他運算子有更高的優先順序,乘除運算子具有比加減運算子更高的優先順序。

例如 x = 7 + 3 * 2,在這裡,x 被賦值為 13,而不是 20,因為運算子 * 具有比 + 更高的優先順序,所以首先計算乘法 3*2,然後再加上 7。

結合性是指具有相同優先順序的操作符的運算順序,從左至右運算稱為左結合,從右至左運算稱為右結合。

自增(++)和自減(--)操作符為物件加1或減1操作提供了方便簡短的實現方式。它們有前置和後置兩種使用形式。到目前為止,我們已經使用過前自增操作,該操作使其運算元加1,操作結果是修改後的值。

c語言運算子是說明特定操作的符號,它是構造c語言表示式的工具。c語言的運算異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運算子處理。

擴充套件資料

運算子優先順序

1、函式計算優先。

2、其次是強制型別轉換。

3、自增、自減和取反次之。

4、先乘除再加減。

5、有括號先算括號內的。

6、表示式中出現連續兩個運算子時最好用空格隔開,如a+++b要寫成:a++ +b或a+ ++b。同一優先順序的運算子,運算次序由結合方向所決定。

7樓:靳大大來了

附錄c c語言運算子優先順序和結合性

優先順序 運算子 含義 運算型別 結合性

1 ( )

[ ]->

, 圓括號

下標運算子

指向結構體成員運算子

結構體成員運算子 單目 自左向右

2 !~

++ --

(型別關鍵字)

+ -*

&sizeof 邏輯非運算子

按位取反運算子

自增、自尖運算子

強制型別轉換

正、負號運算子

指標運算子

地址運算子

長度運算子 單目 自右向左

3 * / % 乘、除、求餘運算子 雙目 自左向右4 + - 加、減運算子 雙目 自左向右

5 <<

>> 左移運算子

右移運算子 雙目 自左向右

6 < <= > >= 小於、大於、小於等於、大於等於 關係 自左向右

7 = = != 等於、不等於 關係 自左向右8 & 按位與運算子 位運算 自左向右

9 ^ 按位異或運算子 位運算 自左向右

10 | 按位或運算子 位運算 自左向右

11 && 邏輯與運算子 位運算 自左向右12 || 邏輯或運算子 位運算 自左向右13 ? : 條件運算子 三目 自右向左

14 = += -= *=

/= %= << = >>= &= ^= |= 賦值運算子 雙目 自右向左

15 , 逗號運算 順序 自左向右

8樓:伊·梵

*p_value++等價於 *(p_value++)

printf("(*p_value)++是%d\n", (*p_value)++);

// 這一行輸出的*p_value的值,也就是4,輸出之後*p_value結果自增為5

printf("*p_value++是%d\n", *p_value++);

// 這一行輸出的*p_value的值,也就是5,輸出之後p_value結果自增

程式沒有亂碼:

c語言中運算子優先順序排序C語言中運算子優先順序排序

c語言中運算子優先順序排序如下 分為優先順序15級 1 圓括號 下標運算子 分量運算子的指向結構體成員運算子 結構體成員運算子 2 邏輯非運算子 按位取反運算子 自增自減運算子 負號運算子 型別轉換運算子 型別 指標運算子和取地址運算子 長度運算子 sizeof 3 乘法運算子 除法運算子 取餘運算...

C中運算子優先順序的問題,c中的運算子優先順序順序是什麼

假定陣列是 int y 指標是 int symbol y int x 222 語句 symbol x 因為是字尾 表示式裡不自增,故計算分2步走,版1 1 symbol x 1 2 symbol symbol 1 symbol指向 y 1 語句 symbol x 優先順序高於 所以類似 權上面,字尾...

c語言中運算子優先順序跟運算順序有什麼關係

沒有太多關係,優先順序高的結合律高 比如a b c這樣的就是先算b c,然後再和a進行加法 再比如a b c d這樣的就是先算a b,然後再算c d,然後再將結果加到前面的計算結果中。c語言中運算子優先順序跟運算順序有什麼關係 優先順序依次遞減 算術運算子 關係運算子 邏輯運算子 條件運算子 賦值運...