C語言運算符優(yōu)先級順序如下所示:
鄯善網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,鄯善網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為鄯善上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的鄯善做網(wǎng)站的公司定做!
自增運算符 ++ 和自減運算符 --,在作后綴運算符(如表達式 x++)時,較其用作前綴運算符(如表達式 ++x)時,具有較高的優(yōu)先級。
+、-、* 和 運算符記號不但可以當(dāng)作一元運算符(unary operator,只需要一個操作數(shù)),也可以當(dāng)作二元運算符(binary operator,需要兩個操作數(shù))。例如,* 只有一個操作數(shù)的時候,就是間接運算符(indirection operator),而有兩個操作數(shù)的時候,就是乘號。
擴展資料
一個表達式可以包含多個運算符。在這種情況下,運算符的優(yōu)先級決定表達式的哪部分被處理為每個運算符的操作數(shù)。例如,按照運算規(guī)則,表達式中?*、/、以及 % 的優(yōu)先級比 + 和 - 高。如下列表達式:
a - b * c
相當(dāng)于 a-(b*c)。如果想讓操作數(shù)以不同的方式組合在一起,則必須使用括號:
(a - b) * c
如果一個表達式中的兩個操作數(shù)具有相同的優(yōu)先級,那么它們的結(jié)合律(associativity)決定它們的組合方式是從左到右或是從右到左。例如,算術(shù)運算符和操作數(shù)的組合方式是從左到右,賦值運算符則是從右到左。
C語言中運算符優(yōu)先級排序如下:
分為優(yōu)先級15級:
1、圓括號【()】、下標(biāo)運算符【[]】、分量運算符的指向結(jié)構(gòu)體成員運算符【-】、結(jié)構(gòu)體成員運算符【.】;
2、邏輯非運算符【!】、按位取反運算符【~】、自增自減運算符【++】【 --】、負號運算符【-】、類型轉(zhuǎn)換運算符【(類型)】、指針運算符和取地址運算符【*】【】、長度運算符【sizeof】;
3、乘法運算符【*】、除法運算符【/】、取余運算符【%】;
4、加法運算符【+】、減法運算符【-】;
5、左移動運算符【】、右移動運算符【】;
6、關(guān)系運算符【 】【】【=】【 = 】;
7、等于運算符【==】、不等于運算符【!=】;
8、按位與運算符【】;
9、按位異或運算符【^】;
10、按位或運算符【|】;
11、邏輯與運算符【】;
12、邏輯或運算符【||】;
13、條件運算符【?:】;
14、賦值運算符【=】【/=】【*=】【%=】【+=】【-=】【=】【=】【=】【^=】【|=】;
15、逗號運算符【,】。
注意:
每種同類型的運算符都有內(nèi)部的運算符優(yōu)先級,不同類型的運算符之間也有相應(yīng)的優(yōu)先級順序。一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數(shù)。當(dāng)多種運算符出現(xiàn)在同一個表達式中時,應(yīng)該先按照不同類型運算符間的優(yōu)先級進行運算。
各種運算符間的優(yōu)先級如下:數(shù)值運算符、字符串運算符、關(guān)系運算符、邏輯運算符。可以用括號改變優(yōu)先級順序,使得括號內(nèi)的運算優(yōu)先于括號外的運算。對于多重括號,總是由內(nèi)到外強制表達式的某些部分優(yōu)先運行。括號內(nèi)的運算總是最優(yōu)先計算。
c語言運算符優(yōu)先級從高到低的順序依次如下:
優(yōu)先級從上到下依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu)先級。表達式的結(jié)合次序取決于表達式中各種運算符的優(yōu)先級。優(yōu)先級高的運算符先結(jié)合,優(yōu)先級低的運算符后結(jié)合,同一行中的運算符的優(yōu)先級相同。
不同類型的運算符之間也有相應(yīng)的優(yōu)先級順序:
一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數(shù)。當(dāng)多種運算符出現(xiàn)在同一個表達式中時,應(yīng)該先按照不同類型運算符間的優(yōu)先級進行運算。
各種運算符間的優(yōu)先級如下:
數(shù)值運算符、字符串運算符、關(guān)系運算符、邏輯運算符??梢杂美ㄌ柛淖儍?yōu)先級順序,使得括號內(nèi)的運算優(yōu)先于括號外的運算。對于多重括號,總是由內(nèi)到外強制表達式的某些部分優(yōu)先運行。括號內(nèi)的運算總是最優(yōu)先計算。
1級優(yōu)先級
左結(jié)合
()
圓括號
[]
下標(biāo)運算符
-
指向結(jié)構(gòu)體成員運算符
.
結(jié)構(gòu)體成員運算符
2級優(yōu)先級
右結(jié)合
!
邏輯非運算符
~
按位取反運算符
++
前綴增量運算符
--
前綴增量運算符
+
正號運算符
-
負號運算符
(類型)
類型轉(zhuǎn)換運算符
*
指針運算符
地址與運算符
sizeof
長度運算符
3級優(yōu)先級
左結(jié)合
*
乘法運算符
/
除法運算符
%
取余運算符
4級優(yōu)先級
左結(jié)合
+
加法運算符
-
減法運算符
5級優(yōu)先級
左結(jié)合
左移運算符
右移運算符
6級優(yōu)先級
左結(jié)合
、=、、=
關(guān)系運算符
7級優(yōu)先級
左結(jié)合
==
等于運算符
!=
不等于運算符
8級優(yōu)先級
左結(jié)合
按位與運算符
9級優(yōu)先級
左結(jié)合
^
按位異或運算符
10級優(yōu)先級
左結(jié)合
|
按位或運算符
11級優(yōu)先級
左結(jié)合
邏輯與運算符
12級優(yōu)先級
左結(jié)合
||
邏輯或運算符
13級優(yōu)先級
右結(jié)合
?
:
條件運算符
14級優(yōu)先級
右結(jié)合
=
+=
-=
*=
/=
%=
=
^=
|=
=
=
全為賦值運算符
15級優(yōu)先級
左結(jié)合
,
逗號運算符
優(yōu)先級從上到下依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu)先級。
所有的優(yōu)先級中,只有三個優(yōu)先級是從右至左結(jié)合的,它們是單目運算符、條件運算符、賦值運算符。其它的都是從左至右結(jié)合。
具有最高優(yōu)先級的其實并不算是真正的運算符,它們算是一類特殊的操作。()是與函數(shù)相關(guān),[]與數(shù)組相關(guān),而-及.是取結(jié)構(gòu)成員。
其次是單目運算符,所有的單目運算符具有相同的優(yōu)先級,因此在我認(rèn)為的
真正的運算符中它們具有最高的優(yōu)先級,又由于它們都是從右至左結(jié)合的,因此*p++與*(p++)等效是毫無疑問的。
另外在c語言里
沒有前置后置之分
因為++
--
是右結(jié)合所以
右側(cè)優(yōu)先運算
表現(xiàn)為
"后置優(yōu)先級比較高"
的假象
前置和后置的區(qū)分是因為運算符重載而后加入c++的
接下來是算術(shù)運算符,*、/、%的優(yōu)先級當(dāng)然比+、-高了。
移位運算符緊隨其后。
其次的關(guān)系運算符中,
=
=要比
==
!=高一個級別,不大好理解。
所有的邏輯操作符都具有不同的優(yōu)先級(單目運算符出外,!和~)
邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。
跟在其后的比||高。
接下來的是條件運算符,賦值運算符及逗號運算符。
在c語言中,只有4個運算符規(guī)定了運算方向,它們是、|
|、條件運算符及賦值運算符。
、|
|都是先計算左邊表達式的值,當(dāng)左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值。如
a
=
b;
運算符的左邊位0,則右邊表達式b就不再判斷。
在條件運算符中。如a?b:c;先判斷a的值,再根據(jù)a的值對b或c之中的一個進行求值。
賦值表達式則規(guī)定先對右邊的表達式求值,因此使
a
=
b
=
c
=
6;成為可能。