Ⅰ c語言中的運算符優先順序是怎麼樣的
下面按優先順序從高到低的順序總結一下各種運算符,每一條所列的各運算符具有相亮者同的優先 級,對於同一優先順序的多個運算符按什麼順序計算也有說明,雙目運算符就簡單地用「左結 合」或「右結合」來說明了。和指針有關的運算符* & ->也在這里列出來了,以後再詳細解釋。
1 、標識符、常量、字元串和用()括弧套起搜帶來的表達式是組成表達式的最基本單元,在運算中做 操作數,優先順序最世鍵蘆高。
2、後綴運算符,包括數組取下標[]、函數調用()、結構體取成員.、指向結構體的指針取成員- >、後綴自增++、後綴自減--。如果一個操作數後面有多個後綴,按照離操作數從近到遠的順序 (也就是從左到右)依次運算,比如a.name++,先算a.name,再++,這里的.name應該看成a的 一個後綴,而不是把. 看成雙目運算符。
3、單目運算符,包括前綴自增++、前綴自減--、 sizeof、類型轉換()、取地址運算&、指針間接 定址*、正號+、負號-、按位取反~、邏輯非! 。如果一個操作數前面有多個前綴,按照離操作數 從近到遠的順序(也就是從右到左)依次運算,比如!~a,先算~a,再求!。
4、乘*、除/、模%運算符。這三個運算符是左結合的。 5、加+、減-運算符。左結合。
6、移位運算符<<和>>。左結合。
7、關系運算符< > <= >=。左結合。
8、相等性運算符==和!=。左結合。
9、按位與&。左結合。
10、按位異或^。左結合。
11 、按位或|。左結合。
12、邏輯與&&。左結合。
13、邏輯或||。左結合。
14、條件運算符:?。在第 2 節 「if/else語句」講過Dangling-else問題,條件運算符也有類似的問 題。例如a ? b : c ? d : e是看成(a ? b : c) ? d : e還是a ? b : (c ? d : e) ? C語言規 定是後者。
15、賦值=和各種復合賦值(*= /= %= += -= <<= >>= &= ^= |=)。右結合。
16、逗號運算符。左結合。
Ⅱ c語言中運算符號的優先順序
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
各種運算符間的優先順序
數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。
Ⅲ c語言優先順序是什麼
C語言的運算符包括單目運算符、雙目運算符、三目運算符,優先順序如下:
第1優先順序:各種括弧,如()、[]等、成員運算符。
第2優先順序:所有單目運算符,如++、–指穗、!、~等。
第3優先順序:乘法運算符*、除法運算符/、求余運算符%。
第4優先順序:加法運算符+、減法運算符-。
第5優先順序:移位運算符<<、>>。
第6優先順序:大於運算符>、大於等於運叢寬算符>=、小於運算符<、小於等於運算符<=。
第7優先順序:等於運算符==、不等於運算符!=。
第8優先順序:按位與運算符&。
第9優先順序:按位異或運算符^。
第10優先順序:按位或運算符|。
第11優先順序:邏輯與運算符&&。
第12優先順序:邏唯鄭卜輯或運算符||。
第13優先順序:三目條件運算符?。
第14優先順序:各種賦值運算符,如=、+=、-=、*=、/=等。
第15優先順序:逗號運算。
Ⅳ c語言優先順序是什麼
C語言中運算符優先順序排序如下:
分為優先順序15級:
1、圓括弧【()】、下標運算符【[]】、分量運算符的指向結構體成員運算符【->】、結構體成員運算符【.】;
2、邏輯非運算符【!】、按位取反運算符【~】、自增自減運算符【++】【 --】、負號運算符【-】、類型轉換運算符【(類型)】、指針運算符和取地址運算符【*】【&】、長度運算符【sizeof】;
3、乘法運算符【*】、除法運算符【/】、取余運算符【%】;
4、加法運算符【+】、減法運算符【-】;
5、左移動運算符【<<】、右移動運算符【>>】;
6、關系運算符【< 】【>】【<=】【 >= 】;
7、等於運算符【==】、不等於運算符【!=】;
8、按位與運算符【&】;
9、按位異或運算符【^】;
10、按位或運算符【|】;
11、邏輯與運算符【&&】;
12、邏輯或運算符【||】;
13、條件運算符【?:】;
14、賦值運算符【=】【/=】【*=】【%=】【+=】【-=】【<<=】【>>=】【&=】【^=】【|=】;
15、逗號運算符【,】。
注意:
每種同類型的運算符都有內部的運算符優先順序,不同類型的運算符之間也有相應的優先順序順序。一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數。當多種運算符出現在同一個表達式中時,應該先按照不同類型運算符間的優先順序進行運算。
各種運算符間的優先順序如下:數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。
Ⅳ c語言運算優先順序
優先順序就是當表達式中有多個運算符時,先計算誰,後計算誰。打個比方,在四則運算中乘除的優先順序就高於加減。
但是C語言中的運算符除了加減乘除還有很多,我們也沒必要將所有運算符的優先順序都記住,這里列出來各個運算符的優先順序表,實在需要用到的時候查一下表就行了。而且實際上在編程的時候需要考慮優先順序的情況很少,因為如果不知道優先順序高低的話,加一個括弧就行了,因為括弧的優先順序是最高的。
比如:
k = (j > i) && (8 == i)
根據優先順序的高低,完全可以寫成:
k = j > i && 8 == i
第一種寫法是比較提倡的,因為一看就知道先計算誰後計算誰,節省了大家的時間還不容易出錯。而且加圓括弧也是一種編程規范,因為程序不只是寫給自己看。
此外運算符還有「目」和「結合性」的概念。「目」就是眼睛的意思,一個運算符需要幾個數參與就歸為「幾目」。C語言中大多數運算符都是雙目的,比如 和 運算符;也有單目和三目的,單目運算符如邏輯非 ( !1 );三目運算符即條件運算符,?:也是C語言中的唯一一個三目運算符。
說完了「目」的概念,再來說一說「結合性」。先來煮個栗子:
1 + 2 × 3 / 4
上式中乘法和除法的優先順序相同,但計算的時候是從左往右,所以乘和除的結合性就是從左往右,so easy!
C語言中大多數運算符的結合性都是從左往右,只有三個運算符是從右往左的。一個是單目運算符,另一個是三目運算符,還有一個就是雙目運算符中的賦值運算符 。運算符的「結合性」也不需要死記硬背,在不斷使用中就記住了。
Ⅵ C語言的運算符的優先順序是什麼
1、最高級:出現同級別運算符時的結合方向是從左往右(下面級別沒寫結合順序時,默認是從左往右)。
( )圓括弧
[ ]下標運算符號
->指向結構體成員運算符
.結構體成員運算符
Ⅶ 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。
五級運算符:「 * 」 乘法運算符。
六級運算符:「 + 」加法運算符。
七級運算符:<< 左移運算符;>> 右移運算符。
八級運算符:<、<=、>、>=關系運算符。
九級運算符:「 == 」等於運算符;「 != 」不等於運算符。
十級運算符:「 & 」按位與運算符。
十一級運算符:「 ∧ 」按位異或運算符。
十二級運算符:「 | 」按位或運算符。
十三級運算符:「&&」邏輯與運算符。
十四級運算符:「 || 」邏輯或運算符。
十五級運算符:? :條件運算符。
(7)c語言運算符優先順序怎麼寫擴展閱讀
C語言中各運算符的結合性:
1、左結合性(自左至右):
例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合方向就稱為「左結合性」。
2、右結合性(自右至左)
自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
Ⅷ c語言運算符的優先順序順序
c語言運算符優先順序從高到低的順序依次如下:
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。
不同類型的運算符之間也有相應的優先順序順序:
一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數。當多種運算符出現在同一個表達式中時,應該先按照不同類型運算符間的優先順序進行運算。
各種運算符間的優先順序如下:
數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。
Ⅸ 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語言運算符優先順序順序
C語言運算符優先順序順序如下所示:
(10)c語言運算符優先順序怎麼寫擴展閱讀
一個表達式可以包含多個運算符。在這種情況下,運算符的優先順序決定表達式的哪部分被處理為每個運算符的操作數。例如,按照運算規則,表達式中*、/、以及 % 的優先順序比 + 和 - 高。如下列表達式:
a - b * c
相當於 a-(b*c)。如果想讓操作數以不同的方式組合在一起,則必須使用括弧:
(a - b) * c
如果一個表達式中的兩個操作數具有相同的優先順序,那麼它們的結合律(associativity)決定它們的組合方式是從左到右或是從右到左。例如,算術運算符和操作數的組合方式是從左到右,賦值運算符則是從右到左。