當前位置:首頁 » 編程語言 » c語言中取大優先是什麼意思
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中取大優先是什麼意思

發布時間: 2023-06-03 21:34:57

c語言優先順序是什麼意思

C語言的優先順序是指運算符的優先順序。

每種同類型的運算符都有內部的運算符優先順序,不同類型的運算符之間也有相應的優先順序順序。

一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數。



注意事項:

當多種運算符出現在同一個表達式中時,應該先按照不同類型運算符間的優先順序進行運算。

各種運算符間的優先順序如下:數值運算符、字元串運算符、關系運算符、邏輯運算符。

可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。

對於多重括弧,總是由內到外強製表達式的某些部分優先運行。

括弧內的運算總是最優先計算。

② C語言運算符的優先順序

優先順序:C語言中,運算符的運算優先順序共分為15 級。1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。
結合性:C語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算符的結合性是自左至右,即先左後右。如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合 方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。

所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。其它的都是從左至右結合。
具有最高優先順序的其實並不算是真正的運算符,它們算是一類特殊的操作。()是與函數相關,[]與數組相關,而->及.是取結構成員。
其次是單目運算符,所有的單目運算符具有相同的優先順序,因此在我認為的 真正的運算符中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。
另外在C語言里,沒有前置後置之分,因為++ -- 是右結合所以右側優先運算,表現為 操作數後置優先順序比較高 的假象,前置和後置的區分是因為運算符重載而後加入C++的
接下來是算術運算符,*、/、%的優先順序當然比+、-高了。
移位運算符緊隨其後。
其次的關系運算符中,< <= > >=要比 == !=高一個級別,不大好理解。
所有的邏輯操作符都具有不同的優先順序(單目運算符除外,!和~)
邏輯位操作符的與比或高,而異或則在它們之間。
跟在其後的&&比||高。
接下來的是條件運算符,賦值運算符及逗號運算符。
在C語言中,只有4個運算符規定了運算方向,它們是&&、| |、條件運算符及賦值運算符。
&&、| |都是先計算左邊表達式的值,當左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值。如 a = 0 && b; &&運算符的左邊位0,則右邊表達式b就不再判斷。
在條件運算符中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。
賦值表達式則規定先對右邊的表達式求值,因此使 a = b = c = 6;成為可能。
口訣注釋
優先順序等級口訣
圓方括弧、箭頭一句號, 自增自減非反負、針強地址長度,
乘除,加減,再移位,
小等大等、等等不等,
八位與,七位異,六位或,五與,四或,三疑,二賦,一真逗。
其中「,」號為一個等級分段。
優先順序等級注釋
「圓方括弧、箭頭一句號」指的是第15級的運算符。其中圓方括弧很明顯「()、[]」,箭頭 指的是指向結構體成員運算符「->」,句號 指的是結構體成員運算符「.」 ;
「自增自減非反負、針強地址長度」指的是第14級的運算符。其中 非 指的是邏輯運算符「!」,反 指的是按位取反運算符「~」,負 指的是負號運算符「-」,針 指的是指針運算符「*」,強 指的是強制類型轉換運算符,地址 指的是地址運算符「&」,長度 指的是長度運算符「sizeof 」;
「乘除,加減,再移位」移位指的是左移運算符「<<」和右移運算符「>>」,其中除法還包括了 取余運算符「%」;
「小等大等、等等不等」 指的是第10級到第9級的運算符:<、<=、>和>=,等等指的是等於運算符==,不等指的是不等於運算符!=
「八位與,七位異,六位或」其中 八位與 指的是第8級的 按位與 運算符「&」,七位異 指的是第7級的按位異或運算符「^」,六位或 指的是第6級的按位或運算符「|」;
「五與,四或」指的是第5級、第4級的邏輯與運算符「&&」和邏輯或運算符「||」;
「三疑,二賦,一真逗」指的是第3級到第1級的運算符。其中,三疑指的是條件運算符「?:」 (三有雙重含義:即指優先順序別是三,它的運算符類型也是三目,疑也取「?」之意),二賦 指的是賦值運算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,一真逗 指的是第1級的「,」運算符,真字只是為了語句需要罷了。
由於C語言的運算符優先順序與C++的不完全一樣(主要是增加了幾個運算符),所以這個口訣不能完全實用於C++.但是應該能夠兼容,大家可以比較一下他們的區別應該就能夠很快掌握C++的優先順序的!
應用舉例
1、賦值運算符:a=5;
a=b=0;
第一個賦值語句把5賦給變數a;第二個賦值語句的意思是把0同時賦值給兩個變數。這是因為賦值語句是從右向左運算的,也就是說從右端開始計算,先b=0,然後a=b。
2、復合賦值運算符:a=1;a+=3;
上面第二個賦值語句等價於a=a+3;即a=4。
3、算術運算符:Area=Height*Width;num=num1+num2/num3-num4;
第一個賦值語句Height和Width相乘結果賦給變數Area;第二個賦值語句先完成num2與num3的整除運算,然後與num1相加,再減去num4,結果賦給num。運算符運算順序先算乘除再算加減。單目正和單目負最先運算。
4、邏輯運算符:a=1,b=1;
a||b-1;
因為a=1為真值,所以不管b-1是不是真值,總的表達式一定為真值,這時後面的表達式就不會再計算了。
5、關系運算符:if(a>0)...
如果a>0,則執行if語句中的內容,否則退出。
6、條件運算符:a=(b>0)?b:-b;
當b>0時,a=b;當b不大於0時,a=-b;其實上面的意思就是把b的絕對值賦值給a。
7、逗號運算符:b=2,c=7,d=5;
a=(++b,c--,d+3);
有三個表達式,用逗號分開,所以最終的值應該是最後一個表達式的值,也就是d+3=8,所以a=8。
8、位邏輯運算符
包括:1。&位與符 2。|位或符 3。^位異或符 4。~位取反符以操作數12為例。位運算符將數字12視為1100。位運算符將操作數視為位而不是數值。數值可以是任意進制的:十進制、八進制或十六進制。位運算符則將操作數轉化為二進制,並相應地返回1或0。位運算符將數字視為二進制值,並按位進行相應運算,運算完成後再重新轉換為數字。例如:表達式10&15表示(1010 & 1111),它將返回表示1010的值10。因為真真得真,或者是11得1,同位全是1結果也是1表達式10|15表示(1010 | 1111),它將返回表示1111的值15。假假得假。全零得零。表達式10^15表示(1010 ^ 1111), 它將返回表示0101的值5。此時是同性相斥,相同的就為假。表達式~10表示(~1010),它將返回表示0101的值 -11。此號好理解,按位取反。

③ C語言的運算符的優先順序是什麼

1、最高級:出現同級別運算符時的結合方向是從左往右(下面級別沒寫結合順序時,默認是從左往右)。

( )圓括弧

[ ]下標運算符號

->指向結構體成員運算符

.結構體成員運算符

④ 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語言中的運算符優先順序是怎麼樣的

下面按優先順序從高到低的順序總結一下各種運算符,每一條所列的各運算符具有相亮者同的優先 級,對於同一優先順序的多個運算符按什麼順序計算也有說明,雙目運算符就簡單地用「左結 合」或「右結合」來說明了。和指針有關的運算符* & ->也在這里列出來了,以後再詳細解釋。

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語言中的運算符除了加減乘除還有很多,我們也沒必要將所有運算符的優先順序都記住,這里列出來各個運算符的優先順序表,實在需要用到的時候查一下表就行了。而且實際上在編程的時候需要考慮優先順序的情況很少,因為如果不知道優先順序高低的話,加一個括弧就行了,因為括弧的優先順序是最高的。

比如:

k = (j > i) && (8 == i)
根據優先順序的高低,完全可以寫成:

k = j > i && 8 == i
第一種寫法是比較提倡的,因為一看就知道先計算誰後計算誰,節省了大家的時間還不容易出錯。而且加圓括弧也是一種編程規范,因為程序不只是寫給自己看。

此外運算符還有「目」和「結合性」的概念。「目」就是眼睛的意思,一個運算符需要幾個數參與就歸為「幾目」。C語言中大多數運算符都是雙目的,比如 和 運算符;也有單目和三目的,單目運算符如邏輯非 ( !1 );三目運算符即條件運算符,?:也是C語言中的唯一一個三目運算符。

說完了「目」的概念,再來說一說「結合性」。先來煮個栗子:

1 + 2 × 3 / 4
上式中乘法和除法的優先順序相同,但計算的時候是從左往右,所以乘和除的結合性就是從左往右,so easy!

C語言中大多數運算符的結合性都是從左往右,只有三個運算符是從右往左的。一個是單目運算符,另一個是三目運算符,還有一個就是雙目運算符中的賦值運算符 。運算符的「結合性」也不需要死記硬背,在不斷使用中就記住了。