當前位置:首頁 » 編程語言 » c語言運算符優先次序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言運算符優先次序

發布時間: 2022-01-25 22:19:48

Ⅰ 求c語言運算符優先順序

優先順序 運算符 名稱或含義 使用形式 結合方向 說明
1 [] 數組下標 數組名[常量表達式] 左到右
() 圓括弧 (表達式)/函數名(形參表)
. 成員選擇(對象) 對象.成員名
-> 成員選擇(指針) 對象指針->成員名
2 - 負號運算符 -表達式 右到左 單目運算符
(類型) 強制類型轉換 (數據類型)表達式
++ 自增運算符 ++變數名/變數名++ 單目運算符
-- 自減運算符 --變數名/變數名-- 單目運算符
* 取值運算符 *指針變數 單目運算符
& 取地址運算符 &變數名 單目運算符
! 邏輯非運算符 !表達式 單目運算符
~ 按位取反運算符 ~表達式 單目運算符
sizeof 長度運算符 sizeof(表達式)
3 / 除 表達式/表達式 左到右 雙目運算符
* 乘 表達式*表達式 雙目運算符
% 余數(取模) 整型表達式/整型表達式 雙目運算符
4 + 加 表達式+表達式 左到右 雙目運算符
- 減 表達式-表達式 雙目運算符
5 << 左移 變數<<表達式 左到右 雙目運算符
>> 右移 變數>>表達式 雙目運算符
6 > 大於 表達式>表達式 左到右 雙目運算符
>= 大於等於 表達式>=表達式 雙目運算符
< 小於 表達式<表達式 雙目運算符
<= 小於等於 表達式<=表達式 雙目運算符
7 == 等於 表達式==表達式 左到右 雙目運算符
!= 不等於 表達式!= 表達式 雙目運算符
8 & 按位與 表達式&表達式 左到右 雙目運算符
9 ^ 按位異或 表達式^表達式 左到右 雙目運算符
10 | 按位或 表達式|表達式 左到右 雙目運算符
11 && 邏輯與 表達式&&表達式 左到右 雙目運算符
12 || 邏輯或 表達式||表達式 左到右 雙目運算符
13 ?: 條件運算符 表達式1? 表達式2: 表達式3 右到左 三目運算符
14 = 賦值運算符 變數=表達式 右到左
/= 除後賦值 變數/=表達式
*= 乘後賦值 變數*=表達式
%= 取模後賦值 變數%=表達式
+= 加後賦值 變數+=表達式
-= 減後賦值 變數-=表達式
<<= 左移後賦值 變數<<=表達式
>>= 右移後賦值 變數>>=表達式
&= 按位與後賦值 變數&=表達式
^= 按位異或後賦值 變數^=表達式
|= 按位或後賦值 變數|=表達式
15 , 逗號運算符 表達式,表達式,… 左到右 從左向右順序運算
說明:
同一優先順序的運算符,運算次序由結合方向所決定。
簡單記就是:! > 算術運算符 > 關系運算符 > && > || > 賦值運算符

Ⅱ C語言運算符優先順序順序

C語言運算符優先順序順序如下所示:

(2)c語言運算符優先次序擴展閱讀

一個表達式可以包含多個運算符。在這種情況下,運算符的優先順序決定表達式的哪部分被處理為每個運算符的操作數。例如,按照運算規則,表達式中*、/、以及 % 的優先順序比 + 和 - 高。如下列表達式:

a - b * c

相當於 a-(b*c)。如果想讓操作數以不同的方式組合在一起,則必須使用括弧:

(a - b) * c

如果一個表達式中的兩個操作數具有相同的優先順序,那麼它們的結合律(associativity)決定它們的組合方式是從左到右或是從右到左。例如,算術運算符和操作數的組合方式是從左到右,賦值運算符則是從右到左。

Ⅲ C語言裡面的運算符優先順序如何

C語言中,運算符的運算優先順序共分為15 級。1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。

各等級運算符如下:

(以下說明中,對傳統的1級和2級做了細化,1和2對應傳統1級,3和4對應傳統2級,所以細化說明共有17級。)

1、基本表達式 1級

基本表達式(Primary expressions),主要是用於運算符之間,做為運算數。

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

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


2、後綴表達式 2級

postfix-expression [ expression ],數組下標運算。

postfix-expression ( argument-expression-list),函數調用,括弧內的參數可選。

postfix-expression . identifier,成員訪問

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

postfix-expression ++,後綴自增

postfix-expression --,後綴自減

( type-name ) { initializer-list }

( type-name ) { initializer-list , } 復合初始化,C99後新增。

3、單目/一元運算 3級

++ unary-expression 前綴自增

-- unary-expression 前綴自減

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

sizeof unary-expression 求類型長度,對表達式求類型長度

sizeof ( type-name ) 求類型長度


4、強制類型表達式 4級

( type-name ) cast-expression,強製表達式成為type-name指定的類型。


5、乘法表達式 5級

「 * 」 乘法運算符;「 / 」除法運算符;「 % 」 取余運算符。


6、加法運算符 6級

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


7、移位運算符 7級

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


8、關系運算符 8級

<、<=、>、>=關系運算符。


9、相等運算符 9級

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


10、位與運算符 10級

「 & 」按位與運算符


11、位異或運算符 11級

「 ∧ 」按位異或運算符(Bitwise exclusive OR operator)。


12、位或運算符 12 級

「 | 」按位或運算符(Bitwise inclusive OR operator)。


13、邏輯與運算符 13級

「&&」邏輯與運算符。


14、邏輯或運算符 14 級

「 || 」邏輯或運算符。


15、三元條件運算符 15級

? :條件運算符。


16、賦值運算符 16 級

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


17、逗號運算符 17級

「,」逗號運算符。

具體可參見下圖:

Ⅳ C語言 關於運算符優先順序問題

沒錯,確實先計算b++,不過b++的運算結果是原來的b而不是+1後的b,副作用是給b++
相當於
a/=b;
b++;
這樣你就清楚了

Ⅳ C語言中同等級運算的先後順序

同等級的運算符,先後順序按結合性來進行。下面的代碼有利於理解結合性。

inta,b=1,c=2;
a=b=c;

上面的代碼是先執行b=c呢?還是先執行a=b。如果按前者,a=結果為2,如果按後者,a的結果為1。所有的賦值符(包括復合賦值)都具有右結合性,就是在表達式中最右邊的操作最先執行,然後從右到左依次執行。這樣,c先賦值給b,然後b在賦值給a,最終a的值是2。

所有優先順序相同的操作符,它們的結合性也相同。這是必須如此的,否則結合性依然無法消除歧義,如果在計算表達式的值時需要考慮結合性,那麼最好把這個表達式一分為二或者使用括弧。

例:

a=b+c+d

=是右結合的,所以先計算(b+c+d),然後再賦值給a

+是左結合的,所以先計算(b+c),然後再計算(b+c)+d


在C語言中有少數運算符在C語言標准中是有規定表達式求值的順序的:

1:&& 和 || 規定從左到右求值,並且在能確定整個表達式的值的時候就會停止,也就是常說的短路。

2:條件表達式的求值順序是這樣規定的:

test ? exp1 : exp2;

條件測試部分test非零,表達式exp1被求值,否則表達式exp2被求值,並且保證exp1和exp2兩者之中只有一個被求值。

3:逗號運算符的求值順序是從左到右順序求值,並且整個表達式的值等於最後一個表達式的值,注意逗號','還可以作為函數參數的分隔符,變數定義的分隔符等,這時候表達式的求值順序是沒有規定的!

Ⅵ C語言運算符的優先順序!

從右往左優先
先執行a-=a,a=0
然後a+=0,就是0+0=0了
加個括弧a+=(a-=a)

你想的好像筆誤咯?代碼第一行應該是-=吧?

-------------------
這里變數a執行一次之後就被重新賦值了,不再是8了
聲明成靜態才行

Ⅶ C語言的運算優先順序

c語言運算符號

1級優先順序 左結合
() 圓括弧
[] 下標運算符
-> 指向結構體成員運算符
. 結構體成員運算符

2級優先順序 右結合
! 邏輯非運算符
~ 按位取反運算符
++ 自增運算符
-- 自減運算符
- 負號運算符
(類型) 類型轉換運算符
* 指針運算符
& 地址與運算符
sizeof 長度運算符

3級優先順序 左結合
* 乘法運算符
/ 除法運算符
% 取余運算符

4級優先順序 左結合
+ 加法運算符
- 減法運算符

5級優先順序 左結合
<< 左移運算符
>> 右移運算符

6級優先順序 左結合
<、<=、>、>= 關系運算符

7級優先順序 左結合
== 等於運算符
!= 不等於運算符

8級優先順序 左結合
& 按位與運算符

9級優先順序 左結合
^ 按位異或運算符

10級優先順序 左結合
| 按位或運算符

11級優先順序 左結合
&& 邏輯與運算符

12級優先順序 左結合
|| 邏輯或運算符

13級優先順序 右結合
? : 條件運算符

14級優先順序 右結合
= += -= *= /= %= &= ^= |= <<= >>= 全為賦值運算符

15級優先順序 左結合
, 逗號運算符

Ⅷ C語言的運算符的優先順序是什麼

1、最高級:出現同級別運算符時的結合方向是從左往右(下面級別沒寫結合順序時,默認是從左往右)。

( )圓括弧

[ ]下標運算符號

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

.結構體成員運算符

Ⅸ c語言運算符優先順序從高到低的順序依次為

c語言運算符優先順序從高到低的順序依次如下:

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。

不同類型的運算符之間也有相應的優先順序順序。

一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數。當多種運算符出現在同一個表達式中時,應該先按照不同類型運算符間的優先順序進行運算。

各種運算符間的優先順序如下:數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。