當前位置:首頁 » 編程語言 » c語言中的結合性
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中的結合性

發布時間: 2022-02-27 05:13:33

c語言運算符結合性

c語言中右結合的運算符有:
(1)!邏輯非運算符;~按位取反運算符;++前綴增量運算符;--前綴減量運算符;+正號運算符;-負號運算符;(類型)類型轉換運算符;*指針運算符;&地址運算符;sizeof長度運算符
(2)?
:條件運算符
(3)=、
+=、
-=、
*=、
/=、
%=、
&=、
^=、
|=、
<<=、
>>=賦值運算符

② C語言中左右結合性什麼意思

對左邊還是右邊的操作對象產生影響。

③ 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.類似地,具有左結合性的操作符(如位操作符「&」和「|」)則是從左至右依次執行。

結合性只用於表達式中出現兩個以上相同優先順序的操作符的情況,用於消除歧義。事實上你會注意到所有優先順序相同的操作符,他們的結合性也相同。這是必須如此 的,否則結合性依然無法消除歧義,如果在計算表達式的值時需要考慮結合性,那麼最好把這個表達式一分為二或者使用括弧。

④ C語言中右結合性和右結合性是什麼意思

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

C語言中具有右結合性的運算符包括所在單目運算符以及賦值運算符(=)和條件運算符。其它都是左結合性.

⑤ c語言裡面結合性是什麼意思,

仔細看了一下你的題目,並且在編譯器中運行了一下:

運行的結果如下:

接下來我們解析下為什麼是這個結果:

1、++ : 優先順序為2,結合規則:自右至左。

2、|| 和 && :優先順序分別在12和11,結合規則為:自左至右。

3、++,--是算術運算符,而 ||, && 是邏輯運算符。

4、實際上++x || ++y && ++z;是一個邏輯表達式,整個運算過程遵從的是 || 和 && 的結合規則;而在邏輯的每一個條件中(++x, ++y, ++z),是一個運算表達式。

以上解釋如果對你有幫助,請採納下,謝謝。

⑥ C語言運算符的結合性

結合性是規定運算符與運算數組合成表達式的結合方向。因為運算符是有優先順序別的,表達式的運算應該是先按運算符的優先順序由高到低的順序,結合運算數進行計算,當遇到同級別運算符或者是符號一樣但運算目數不同時,就要用到運算符的結合性。
例如:X=-B+C 或 X=A-B+C與X=A-B*C兩個表達式計算時是這樣的

對於X=-B+C,表達式運算時是這樣的,先數據棧讀入X,符號棧讀入=(賦值運算符),因為=是雙目運算符,還要讀入數據,所以繼續向後讀表達式;又讀到-號,不是數據,而且-號的運算級別高於=號,所以-號進入符號棧,繼續向後讀表達式,讀到數據B進入數據棧,這時候-B就符合負號運算符的自右向左結合的單目運算,就進行求值運算,符號棧中-號出棧,與數據棧中B結合成-B,-B就變為一個新的運算數據進入數據棧;後面繼續讀入+號,它是雙目運算符後面還要讀入一個運算數據,C就讀入了數據棧,後面沒有運算符再讀入,表達式結束,那麼就進行符號棧+號和數據棧中C和-B的值相加,將結果存入數據棧中,符號棧中+出棧;符號棧中還有=號,它和數據棧中的結果與X形成賦值的自右向左雙目結合運算,表達式的結果就此運算完畢。
對於X=A-B+C與X=A-B*C兩個表達式計算時,前面X=A-B過程是相同的,只是後面,由於*號比+號的運算級別高,所以表達式X=A-B*C中要先算B*C的結果,在一步一步回退進行A-和X=的運算。而表達式X=A-B+C中+號與-同級別,所以當滿足運算條件時就先進行A-B運算,然後進行+C和X=的運算。
不知道以上的說明,是否能讓你明白C語言中運算符結合性和表達式求值的過程。

⑦ C語言中的左結合性是什麼

意思是:從表達式右邊開始執行;只有同優先順序的運算符才具有結合性「自左至右」或者「自右自左」一說。
有些運算符的優先順序是錯誤的。
「當按照常規方式使用時,可能引起誤會的任何運算符」就是存在錯誤優先順序的運算符。
.的優先順序高於*。->操作符用於消除這個問題。
*p.f變成了*(p.f)而不是(*p).f
[]高於*,於是int
*ap[]中的ap變成了元素為int指針的數組。
函數()高於*,因此,int
*fp()不再是函數指針了,而是一個函數,返回int
*。
逗號運算符在所有運算符中優先順序最低,所以,i
=
1,
2就成了(i
=
1),
2而不是i
=
(1,
2)。
逗號運算符的值是最右邊操作數的值,逗號運算符結合性從左至右,因此又稱為順序求值運算符。
在表達式中如果有布爾操作、算術運算、位操作等混合計算,始終應該在適當的地方加上括弧。
x
=
f()
+
g()
*
h();
乘法先於加法執行,但是g()和h()的調用可能以任何順序出現。
同樣,f()可能在乘法之前調用,也可能在乘法之後調用。
優先順序和結合性規則告訴你哪些符號組成一個意群,大部分這樣的意群內部如何進行計算的次序是未定義的。
有些操作符,如&&和||等,其操作數的計算順序是確定的,它們使用短路原則。
C語言中記住兩個優先順序就夠了:乘法和除法先於加法和減法,在涉及其他操作符時一律加上括弧。
結合性用於在幾個操作符具有相同的優先順序時確定先執行哪一個。
每個操作符擁有某一級別的優先順序,同時也擁有左結合性或者右結合性。所有的賦值符(包括復合賦值符)都具有右結合性(從右到左執行),因此可以使用連等的賦值形式。
唯一的三目運算符?:也是具有右結合性的。
所有優先順序相同的操作符,它們的結合性也相同,這是必須如此的。在函數調用中,各個參數的計算順序是不確定的。

⑧ C語言中的結合性是怎麼回事

簡單說就是,從表達式右邊開始執行;

只有同優先順序的運算符才具有結合性「自左至右」或者「自右自左」一說。

exp(不同優先順序運算符,依據優先順序高低進行運算):
int a = 1, b =10, c = 30;
int a = a * b + c;
因為 * 比 + 的運算符優先順序高,所以
先計算a * b (先計算左邊,未考慮結合性),在計算 10 + c
結果是 a = 300

exp(同優先順序運算符依據結合性進行運算):
int a, b = 1, c = 8;
a = b = c;

賦值運算符其結合性即為自右向左,即 a = ( b = c), 其結果是 b = 8, a = 8;
(錯誤答案:自左向右進行結合的話a = 1)