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

怎麼記C語言的結合性

發布時間: 2022-08-15 06:07:47

c語言 運算符 的結合性 怎麼理解求舉例子詳細解答!!

關於C語言運算符的結合性內容還是比較多的,可以分享給你幾個鏈接,裡面對這個問題講的還是比較清楚的,也有相應的實例,如下:
http://blog.chinaunix.net/uid-1924596-id-3049989.html
http://wenku..com/link?url=_9GNaTgaQPf_
希望能幫到你。

❷ 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語言運算符結合性

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

❹ 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)

❻ 關於C語言結合性

@@@@@@@@@@@@@@@@@@
【規則】關於自增自減運算,很多書籍沒有把問題講清楚,在C語言里是這樣的:

1.後置運算:k++表示先運算,後自加。
意思是遇到k++了,我先把當前的k的值拿來參加運算,後面再去管它的自加。
那麼,【「後面」後到什麼程度呢?要後到當前的語句執行完,即遇到分號;表示
語句執行完了,所以k才自加1。】

2.前置運算:++k表示先自加,後運算
這個意思就是遇到++k了,先把k的值加了1,再往後執行別的。

掌握好這兩點,k--和--k也是一樣的道理。

3.++、--是的運算方向都是,從右往左。

@@@@@@@@@@@@@@@@@@
這里:
1.*p++和*(p++)都是一樣的。
分析:
因為取地址運算符「*」和增量運算符「++」,而且是同級運算。按理說同級運算
從左向右結合!(你們老師講的就是這個規則,得出的結論是*p++是a++,
*(q++)才是地址++ )。
但是,請記住,這里*p++不適用這個規則!++和 *運算方向都是從右向左,因此結合從
右向左,有些書上講++、--時專門講了這個問題!

2.printf("%d %d",*p,(*q)++);老師說從右向左算
這一點是這樣的,printf()這個輸出函數的參數的求值順序是從右向左的,*p和(*q)++
分別是這個函數的兩個參數!明白嗎?記住了。並不是你理解的(就是先算(*q)++再
算*p~~為什麼啊?)即,printf("%d %d",*p,(*q)++);這個語句
是先求 (*q)++的值,再求*p的值的。

3.*(q++)先算*q然後地址再++~~~ ,(事實上就是這么運算的!)
請看:【規則】中,後置到什麼地方?
*(q++)這個表達式的值是這么得的,先算q++,再算*;但是++後置了,所以事實上是
先算*q然後地址再++。

❼ 什麼是C語言的結合性

在幾個操作符具有相同的優先順序時決定先執行哪一個。比如:
int a, b = 2;
a = b = 3;
那麼a,b的值?答案是a,b都是3.
因為賦值運算符具有右結合性,但執行到「a = b = 3」表達式時,先執行「b=3」,然後賦值運算符運算完後返回左操作數,即b(等於3)。於是原表達式成為「a=b",於是a也為3.

❽ C語言中++、--結合性是怎樣的

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

運行的結果如下:

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

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

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

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

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

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

❾ 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)

❿ 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語言中運算符結合性和表達式求值的過程。