c語言操作符優先順序
A. c語言優先順序運算符是什麼
c語言優先順序運算符:
一級運算符:標識,常量,字元串文字量,優先順序提升表達式最優先執行。
二級運算符:數組下標運算(expression)、函數調用(argument-expression-list)、成員訪問(identifier、-> identifier)、後綴自增(i++)、後綴自減(i--)、復合初始化(initializer-list)。
三級運算符:前綴自增(++i)、前綴自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、位反~ 邏輯否!)、求類型長度(sizeof unary-expression)。
四級運算符:強製表達式成為type-name指定的類型( type-name ) cast-expression。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<< 左移運算符;>> 右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
注意:
在一個表達式中可能包含多個有不同運算符連接起來的、具有不同數據類型的數據對象;由於表達式有多種運算,不同的結合順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表達式中含多種運算時,必須按一定順序進行結合,才能保證運算的合理性和結果的正確性、唯一性。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。
B. C語言中運算符優先順序排序
1級優先順序
左結合
()
圓括弧
[]
下標運算符
->
指向結構體成員運算符
.
結構體成員運算符
2級優先順序
右結合
!
邏輯非運算符
~
按位取反運算符
++
前綴增量運算符
--
前綴增量運算符
+
正號運算符
-
負號運算符
(類型)
類型轉換運算符
*
指針運算符
&
地址與運算符
sizeof
長度運算符
3級優先順序
左結合
*
乘法運算符
/
除法運算符
%
取余運算符
4級優先順序
左結合
+
加法運算符
-
減法運算符
5級優先順序
左結合
<<
左移運算符
>>
右移運算符
6級優先順序
左結合
<、<=、>、>=
關系運算符
7級優先順序
左結合
==
等於運算符
!=
不等於運算符
8級優先順序
左結合
&
按位與運算符
9級優先順序
左結合
^
按位異或運算符
10級優先順序
左結合
|
按位或運算符
11級優先順序
左結合
&&
邏輯與運算符
12級優先順序
左結合
||
邏輯或運算符
13級優先順序
右結合
?
:
條件運算符
14級優先順序
右結合
=
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=
全為賦值運算符
15級優先順序
左結合
,
逗號運算符
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。其它的都是從左至右結合。
具有最高優先順序的其實並不算是真正的運算符,它們算是一類特殊的操作。()是與函數相關,[]與數組相關,而->及.是取結構成員。
其次是單目運算符,所有的單目運算符具有相同的優先順序,因此在我認為的
真正的運算符中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。
另外在C語言里
沒有前置後置之分
因為++
--
是右結合所以
右側優先運算
表現為
"後置優先順序比較高"
的假象
前置和後置的區分是因為運算符重載而後加入C++的
接下來是算術運算符,*、/、%的優先順序當然比+、-高了。
移位運算符緊隨其後。
其次的關系運算符中,<
<=
>
>=要比
==
!=高一個級別,不大好理解。
所有的邏輯操作符都具有不同的優先順序(單目運算符出外,!和~)
邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。
跟在其後的&&比||高。
接下來的是條件運算符,賦值運算符及逗號運算符。
在C語言中,只有4個運算符規定了運算方向,它們是&&、|
|、條件運算符及賦值運算符。
&&、|
|都是先計算左邊表達式的值,當左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值。如
a
=
0
&&
b;
&&運算符的左邊位0,則右邊表達式b就不再判斷。
望採納
C. c語言中運算符有哪幾種,優先順序順序是怎樣
C語言中,運算符除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用於完成特殊任務的運算符。
運算符的運算優先順序共分為15 級,1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。
一級運算符:標識,常量,字元串文字量,優先順序提升表達式最優先執行。
二級運算符:數組下標運算(expression)、函數調用(argument-expression-list)、成員訪問(identifier、-> identifier)、後綴自增(i++)、後綴自減(i--)、復合初始化(initializer-list)。
三級運算符:前綴自增(++i)、前綴自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、位反~ 邏輯否!)、求類型長度(sizeof unary-expression)。
四級運算符:強製表達式成為type-name指定的類型( type-name ) cast-expression。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<< 左移運算符;>> 右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
(3)c語言操作符優先順序擴展閱讀
C語言中各運算符的結合性:
1、左結合性(自左至右):
例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。
2、右結合性(自右至左)
自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
D. c中運算符的優先順序怎麼排列
c語言運算符優先順序從高到低的順序依次如下:
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。
優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表達式求值順序是從左到右。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。
序列點
序列點是程序執行中的一個點,在這個點之前,前面的表達式的求值和副作用已經完成,而後面表達式的求值和副作用還沒有發生。C 標準定義以下序列點:
(1)運算符&&;運算符||;逗號運算符,;條件運算符?:的第一個子表達式求值結束後。
(2)函數調用運算符()中對所有實參數完成求值之後。
(3)每個完整表達式結束時。完整表達式包括變數初始化表達式,表達式語句的表達式,return 語句的表達式,if 或 switch 語句中的控製表達式,while 或 do語句的控製表達式,for 語句的所有三個表達式。
(4)標准庫函數返回之前,標准輸入輸出函數格式化轉換說明符關聯動作之後,標准查找函數和排序函數在調用比較函數之前和之後及參數傳遞之後。
由序列點的定義可知,與運算符&&;或運算符||;逗號運算符,;條件運算符?:等 4 個運算符的左操作數屬於前一個序列點,右操作數屬於後一個序列點,因此,這 4 個運算符的左操作數的求值要先於右操作數完成。
E. C語言運算符優先順序順序
C語言運算符優先順序順序如下所示:
(5)c語言操作符優先順序擴展閱讀
一個表達式可以包含多個運算符。在這種情況下,運算符的優先順序決定表達式的哪部分被處理為每個運算符的操作數。例如,按照運算規則,表達式中*、/、以及 % 的優先順序比 + 和 - 高。如下列表達式:
a - b * c
相當於 a-(b*c)。如果想讓操作數以不同的方式組合在一起,則必須使用括弧:
(a - b) * c
如果一個表達式中的兩個操作數具有相同的優先順序,那麼它們的結合律(associativity)決定它們的組合方式是從左到右或是從右到左。例如,算術運算符和操作數的組合方式是從左到右,賦值運算符則是從右到左。
F. c語言運算優先順序
優先順序就是當表達式中有多個運算符時,先計算誰,後計算誰。打個比方,在四則運算中乘除的優先順序就高於加減。
但是C語言中的運算符除了加減乘除還有很多,我們也沒必要將所有運算符的優先順序都記住,這里列出來各個運算符的優先順序表,實在需要用到的時候查一下表就行了。而且實際上在編程的時候需要考慮優先順序的情況很少,因為如果不知道優先順序高低的話,加一個括弧就行了,因為括弧的優先順序是最高的。
比如:
k = (j > i) && (8 == i)
根據優先順序的高低,完全可以寫成:
k = j > i && 8 == i
第一種寫法是比較提倡的,因為一看就知道先計算誰後計算誰,節省了大家的時間還不容易出錯。而且加圓括弧也是一種編程規范,因為程序不只是寫給自己看。
此外運算符還有「目」和「結合性」的概念。「目」就是眼睛的意思,一個運算符需要幾個數參與就歸為「幾目」。C語言中大多數運算符都是雙目的,比如 和 運算符;也有單目和三目的,單目運算符如邏輯非 ( !1 );三目運算符即條件運算符,?:也是C語言中的唯一一個三目運算符。
說完了「目」的概念,再來說一說「結合性」。先來煮個栗子:
1 + 2 × 3 / 4
上式中乘法和除法的優先順序相同,但計算的時候是從左往右,所以乘和除的結合性就是從左往右,so easy!
C語言中大多數運算符的結合性都是從左往右,只有三個運算符是從右往左的。一個是單目運算符,另一個是三目運算符,還有一個就是雙目運算符中的賦值運算符 。運算符的「結合性」也不需要死記硬背,在不斷使用中就記住了。
G. C語言的運算符的優先順序是什麼
1、最高級:出現同級別運算符時的結合方向是從左往右(下面級別沒寫結合順序時,默認是從左往右)。
( )圓括弧
[ ]下標運算符號
->指向結構體成員運算符
.結構體成員運算符
H. 您好,我想向您請教一下c語言各個運算符的優先順序別
這種優先順序應該看教科書,誰解釋也不會像教科書那麼精確.遇到具體不懂得再問比較號
I. c語言中運算符號的優先順序
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
各種運算符間的優先順序
數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。