誰能概括的幫我總結一下C中運算子的種類,運算優先順序,結合性相

2021-05-27 10:28:48 字數 5735 閱讀 2779

1樓:匿名使用者

c語言中的運算子可以歸納為下列5類:算術運算子、

關係運算子、賦值運算子、邏輯運算子和條件運算子。

1.算術運算子有+、-、*、/、%。

分別表示算術加、減、乘、除和取餘運算。

這些運算子需要兩個運算物件,稱雙目運算子。除取餘(%)運算子外,這些運算子的運算物件可以是整型,也可以是實型資料。取餘運算的運算物件只能是整型。

取餘運算的結果是兩數相除後所得的餘數。

″+″和″-″也可以用做單目運算子,但作為單目運算子時必須出現在運算量的左邊,運算量可為整型,也可以為實型。

c語言中還提供兩個特殊的單目運算子:++和--,這兩個運算子既可以放在運算物件之前,又可以放在運算物件之後。

在c語言中,凡是按c語言語法規則用常量、變數、函式呼叫以及運算子把運算數連線起來的式子都是合法的表示式。凡表示式都有一個值,即運算結果。

2.在算術表示式中,c語言提供6種關係運算子:

<,>,<=,>=,==,!=。前四種運算子(<,>,<=,>=)的優先順序相同,後兩種的優先順序也相同,並且前四種的優先順序高於後兩種。

關係運算子屬於雙目運算子,其結合方向為自左至右。

用關係運算子可以將兩個表示式(包括算術表示式、關係表示式、邏輯表示式、賦值表示式和字元表示式)連線起來構成關係表示式。

關係運算的結果是1或0。在c語言中沒有邏輯值,用0代表″假″,用1代表″真″。

3.邏輯運算子

c語言提供三種邏輯運算子:&&(邏輯與)、‖(邏輯或)、!(邏輯非)。其中前兩種為雙目運算子,第三種是單目運算子。

關係運算子中的&&和‖運算子的優先順序相同,!運算子的優先順序高於前兩個。

用邏輯運算子將關係表示式或任意資料型別(除void外)的資料連線起來就構成了邏輯表示式。邏輯表示式的值是0或1。

4.賦值運算子

在c語言中,″=″稱為賦值運算子。由賦值運算子組成的表示式稱為賦值表示式。表示式的形式為:

變數=表示式

賦值符號左邊必須是一個代表某一儲存單元的的變數名,賦值號的右邊必須是c語言中合法的表示式。

賦值運算的功能是先計算右邊表示式的值,然後再把此值賦給賦值號左邊的變數,確切地說,是把資料放入以該變數為標識的儲存單元中去。

5.條件運算子

c語言中把″?:″稱作條件運算子。條件運算子要求有三個運算物件,它是c語言中唯一的一個三目運算子。

由條件運算子構成的條件表示式的一般形式為:表示式1?表示式2:

表示式3

當表示式1的值為非零時,取表示式2的值為此條件表示式的值;當表示式1的值為零時,取表示式3的值為此條件表示式的值。

條件運算子具有自右向左的結合性,其優先順序別比關係運算子和算術運算子都低。

c語言中有哪些運算子,各有什麼功能?

2樓:臍橙熟透了

加法運算

符 1、移位運算子

2、 關係運算子

3、相等運算子

4、 位與運算子

5、位異或運算子

6、 位或運算子

7、 邏輯與運算子

8、 邏輯或運算子

9、 三元條件運算子

10、 賦值運算子

12、逗號運算子

13、優先順序

功能介紹:

1、賦值語句的作用是把某個常量或變數或表示式的值賦值給另一個變數。符號為『=』。這裡並不是等於的意思,只是賦值,等於用『==』表示;

2、算術運算子在c語言中有兩個單目和五個雙目運算子;

3、邏輯運算子是根據表示式的值來返回真值或是假值。其實在c語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值;

4、關係運算子是對兩個表示式進行比較,返回一個真/假值;

5、自增自減運算子,這是一類特殊的運算子,自增運算子++和自減運算子--對變數的操作結果是增加1和減少1;

6、賦值運算子,還有一類c/c++獨有的複合賦值運算子。它們實際上是一種縮寫形式,使得對變數的改變更為簡潔;

7、條件運算子(?:)是c語言中唯一的一個三目運算子,它是對第一個表示式作真/假檢測,然後根據結果返回兩外兩個表示式中的一個;

8、逗號運算子在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後一個表示式的值;

9、優先順序和結合性,這些運算子計算時都有一定的順序,就好象先要算乘除後算加減一樣。優先順序和結合性是運算子兩個重要的特性,結合性又稱為計算順序,它決定組成表示式的各個部分是否參與計算以及什麼時候計算。

c語言中,哪些運算子具有左結合性,哪些具有右結合性,幫忙總結下,謝謝了!

3樓:匿名使用者

1級(左結合)   () 圓括號;下標運算

符;->指向結構體成員運算子;. 結構體成員運算子。   2級(右結合)   !

邏輯非運算子;~按位取反運算子;++字首增量運算子;--字首減量運算子;+正號運算子;-負號運算子;(型別)型別轉換運算子;*指標運算子;&地址運算子;sizeof長度運算子。   3級(左結合)   *乘法運算子;/除法運算子;%取餘運算子。   4級(左結合)   +加法運算子;-減法運算子。

     5級(左結合)   《左移運算子;>>右移運算子。   6級(左結合)   <、<=、>、>=關係運算子。   7級(左結合)   ==等於運算子;!

=不等於運算子。   8級(左結合)   &按位與運算子。   9級(左結合)   ^按位異或運算子。

  10級(左結合)   |按位或運算子。   11級(左結合)   &&邏輯與運算子。   12級(左結合)   ||邏輯或運算子。

  13級(右結合)   ? :條件運算子。

  14級(右結合)   =、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=賦值運算子。   15級(左結合)   ,逗號運算子。

編輯本段運算子優先順序與結合性

運算子的優先順序: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++的優先順序的!

編輯本段運算子應用舉例

·賦值運算子:a=5; a=b=0;   第一個賦值語句把5賦給變數a;第二個賦值語句的意思是把0同時賦值給兩個變數。這是因為賦值語句是從右向左運算的,也就是說從右端開始計算,先b=0,然後a=b。

  ·複合賦值運算子:a=1;a+=3;   上面第二個賦值語句等價於a=a+3;即a=4。   ·算術運算子:

area=height*width;num=num1+num2/num3-num4;   第一個賦值語句height和width相乘結果賦給變數area;第二個賦值語句先完成num2與num3的整除運算,然後與num1相加,再減去num4,結果賦給num。運算子運算順序先算乘除再算加減。單目正和單目負最先運算。

  ·邏輯運算子:a=1,b=1; a||b-1;   因為a=1為真值,所以不管b-1是不是真值,總的表示式一定為真值,這時後面的表示式就不會再計算了。   ·關係運算子:

if(a>0)...   如果a>0,則執行if語句中的內容,否則退出。   ·條件運算子:

a=(b>0)?b:-b;   當b>0時,a=b;當b不大於0時,a=-b;其實上面的意思就是把b的絕對值賦值給a。

  ·逗號運算子:b=2,c=7,d=5;a=(++b,c--,d+3);   有三個表示式,用逗號分開,所以最終的值應該是最後一個表示式的值,也就是d+3=8,所以a=8。

誰能幫我解答一下,誰能幫我解答一下??????

如果你是處男的話就應該不會是性病 兄弟,私人部位要勤洗,乾乾淨淨就什麼事都不會有啦 你讓他自己好起來吧 個人衛生的問題,多注意一些,要是還這樣的話就去醫院看看。不是的 放心吧 看來你要注意下個人衛生了.勤換內衣 要是過幾天還不好 就去醫院看下 不是性病。去諮詢醫生。誰能幫我解答一下?你好,這是一道小...

誰能幫我翻譯一下意思,誰能幫我翻譯一下?

在一次遇見你。祈禱更好或更壞 希望更壞或更好 誰能幫我翻譯一下?1 我始舉大義,方造艱 難,須一軍吏甚急,卿謂誰堪其選?我剛剛舉起大旗,發動這場符合道義的事變,正到了艱難的時候,急迫地需要一名在軍中負責文祕工作的人才,你說誰最適合這種工作?2 劉毅等疾穆之見親,每從容言其權重,高祖愈信仗之。劉毅等人...

誰能幫我分析一下我的星盤,誰能幫我分析一下這張票?

非常理解你對於命運瞭解的渴望,我也是,但是這需要真正的高人才行。就像你看到的,網上的多半是互相貼上抄襲的,沒什麼價值。我祝願你早日見到真正的高人,在遇到高人前,請參考我對命運的理解和做法 朋友,命運這個東西,非常有玄機,一般人是看不透的,也是不容易理解的。一個人能否成功,和天分 努力 機遇是分不開的...