A. c語言運算符優先順序與結合性
y++是先對y做相關運算(x-y),然後再++,所以這邊實際上是先計算x-y = -10,然後y再++,所以k=-10
B. C語言中優先順序和結合性 例如:*p++
*p++,由於++和*的優先順序相同,結合方向為自右至左。所以確實*p++等價於*(p++),而p++其實取值的時候還是取p的,是用過之後才能+1。所以*(p++)就是先執行p++得到p,然後執行*p,得到p指向的值,等這個運算結束了才能+1。你的那個理解應該是對於*(++p)的!
C. c++運算符的優先結合
從上面的逗號運算符那個例子可以看出,這些運算符計算時都有一定的順序,就好象先要算乘除後算加減一樣。優先順序和結合性是運算符兩個重要的特性,結合性又稱為計算順序,它決定組成表達式的各個部分是否參與計算以及什麼時候計算。
下面是C語言中所使用的運算符的優先順序和結合性:
優先順序 運算符 結合性
(最高) () [] -> . 自左向右
! ~ ++ -- + - * & sizeof 自右向左
* / % 自左向右
+ - 自左向右
<< >> 自左向右
< <= > >= 自左向右
== != 自左向右
& 自左向右
^ 自左向右
| 自左向右
&& 自左向右
|| 自左向右
?: 自右向左
= += -= *= /= %= &= ^= |= <<= >>= 自右向左
(最低) , 自左向右
D. C語言 優先和結合性
同級運算按次序進行
E. c語言優先順序是什麼
c語言優先順序是:每種同類型的運算符都有內部的運算符優先順序,不同類型的運算符之間也有相應的優先順序順序。一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數。
當多種運算符出現在同一個表達式中時,應該先按照不同類型運算符間的優先順序進行運算。
各種運算符間的優先順序如下:數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。
優先順序結合性:
當一個運算對象兩側的運算符優先順序別相同時,則按運算符的結合性來確定表達式的運算順序。關於結合性的概念在其他高級語言中是沒有的,這是C語言的特點之一。在標准C語言的文檔里,對操作符的結合性並沒有做出非常清楚的解釋。
C語言也將34種運算符規定了不同的結合性。大多數運算符結合方向是「自左至右」,即:先左後右,也叫「左結合性」
例如 a-b + c,表達式中有-和+兩種運算符,且優先順序相同,按先左後右結合方向,先圍繞減號結合,執行a-b的運算,再圍繞加號結合,完成運算(a-b) + c。除了左結合性外,C 語言有三類運算符的結合方向是從右至左,也叫「右結合性」
以上內容參考:網路-運算符優先順序
F. C語言運算的優先順序別和結合方向表是什麼的
優先順序和結合性
C語言中,運算符的運算優先順序共分為15級。1級最高,15級最低。在表達式中,優先順序較高的先於優先順序較低的進行運算。
而在一個運算量兩側的運算符優先順序相同時,
則按運算符的結合性所規定的結合方向處理。
C語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z則y應先與「-」號結合,
執行x-y運算,然後再執行+z的運算。這種自左至右的結合方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。
最典型的右結合性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z再執行x=(y=z)運算。
C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
運算符的種類C語言的運算符可分為以下幾類:
1.算術運算符
用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。
2.關系運算符
用於比較運算。包括大於(>)、小於(<)、等於(==)、
大於等於(>=)、小於等於(<=)和不等於(!=)六種。
3.邏輯運算符
用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4.位操作運算符
參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
5.賦值運算符
用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6.條件運算符
這是一個三目運算符,用於條件求值(?:)。
7.逗號運算符
用於把若干表達式組合成一個表達式(,)。
8.指針運算符
用於取內容(*)和取地址(&)二種運算。
9.求位元組數運算符
用於計算數據類型所佔的位元組數(sizeof)。
10.特殊運算符
有括弧(),下標[],成員(→,.)等幾種。
G. c語言中的運算符優先順序和結合性
初(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、 ,
H. C語言中運算符的結合性是判斷在多個優先順序相同的表達式中運算的先後,能否出現優先順序相同但是結合性不同
在標准c語言的文檔里,對操作符的結合性並沒有作出非常清楚的解釋。一個滿分的回答是:它是仲裁者,在幾個操作符具有相同的優先順序時決定先執行哪一個。
每個操作符擁有某一級別的優先順序,同時也擁有左結合性或右結合性。優先順序決定一個不含括弧的表達式中操作數之間的「緊密」程度。例如,在表達式a*b+c中,乘法運算的優先順序高於加法運算符的優先順序,所以先執行乘法a*b,而不是加法b+c。
但是,許多操作符的優先順序都是相同的。這時,操作符的結合性就開始發揮作用了。在表達式中如果有幾個優先順序相同的操作符,結合性就起仲裁的作用,由它決定哪個操作符先執行。像下面這個表達式:
int
a,b=1,c=2;
a=b=c;
我們發現,這個表達式只有賦值符,這樣優先順序就無法幫助我們決定哪個操作先執行,是先執行b=c呢?還是先執行a=b。如果按前者,a=結果為2,如果按後者,a的結果為1。
所以賦值符(包括復合賦值)都具有右結合性,就是說在表達式中最右邊的操作最先執行,然後從右到左依次執行。這樣,c先賦值給b,然後b在賦值給a,最終a的值是2.類似地,具有左結合性的操作符(如位操作符「&」和「|」)則是從左至右依次執行。
結合性只用於表達式中出現兩個以上相同優先順序的操作符的情況,用於消除歧義。事實上你會注意到所有優先順序相同的操作符,他們的結合性也相同。這是必須如此
的,否則結合性依然無法消除歧義,如果在計算表達式的值時需要考慮結合性,那麼最好把這個表達式一分為二或者使用括弧
I. C運算符的優先順序與結合性
1級(左結合)
() 圓括弧;[]下標運算符;->指向結構體成員運算符;. 結構體成員運算符.。
2級(右結合)
!邏輯非運算符;~按位取反運算符;++前綴增量運算符;--前綴減量運算符;+正號運算符;-負號運算符;(類型)類型轉換運算符;*指針運算符;&地址運算符;sizeof長度運算符。
3級(左結合)
*乘法運算符;/除法運算符;%取余運算符。
4級(左結合)
+加法運算符;-減法運算符。
5級(左結合)
<<左移運算符;>>右移運算符。
6級(左結合)
<、<=、>、>=關系運算符。
7級(左結合)
==等於運算符;!=不等於運算符。
8級(左結合)
&按位與運算符。
9級(左結合)
^按位異或運算符。
10級(左結合)
|按位或運算符。
11級(左結合)
&&邏輯與運算符。
12級(左結合)
||邏輯或運算符。
13級(右結合)
? :條件運算符。
14級(右結合)
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算符。
15級(左結合)
,逗號運算符。
J. c語言優先順序是什麼
c語言優先順序是:
每種同類型的運算符都有內部的運算符優先順序,不同類型的運算符之間也有相應的優先順序順序。一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數。
當多種運算符出現在同一個表達式中時,應該先按照不同類型運算符間的優先順序進行運算。
各種運算符間的優先順序如下:數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。
優先順序結合性:
當一個運算對象兩側的運算符優先順序別相同時,則按運算符的結合性來確定表達式的運算順序。關於結合性的概念在其他高級語言中是沒有的,這是C語言的特點之一。在標准C語言的文檔里,對操作符的結合性並沒有做出非常清楚的解釋。