C語言算術運算子和算術表示式

2021-06-21 02:38:58 字數 3028 閱讀 6519

c語言中運算子和表示式數量之多,在高階語言中是少見的。正是豐富的運算子和表示式使c語言功能十分完善。這也是c語言的主要特點之一。

c語言的運算子不僅具有不同的優先順序,而且還有乙個特點,就是它的結合性。

在表示式中,各運算量參與運算的先後順序不僅要遵守運算子優先順序別的規定,還要受運算子結合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。這種結合性是其它高階語言的運算子所沒有的,因此也增加了c語言的複雜性。

c語言的運算子可分為以下幾類:

運算子說明

算術運算子

用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%)、自增(++)、自減(--)共七種。

關係運算子

用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。

邏輯運算子

用於邏輯運算。包括與(&&)、或(||)、非(!)三種。

位操作運算子

參與運算的量,按二進位制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

賦值運算子

用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=, -=, *=, /=, %=)和復合位運算賦值(&=, |=, ^=, >>=, <<=)三類共十一種。

條件運算子

這是乙個三目運算子,用於條件求值(?:)。

逗號運算子

用於把若干表示式組合成乙個表示式(,)。

指標運算子

用於取內容(*)和取位址(&)二種運算。

求位元組數運算子

用於計算資料型別所佔的位元組數(sizeof)。

特殊運算子

有括號(),下標,成員(->,.)等幾種。

1) 基本的算術運算子

名稱符號

說明加法運算子

+加法運算子為雙目運算子,即應有兩個量參與加法運算。如a+b,4+8等。具有右結合性。

減法運算子

-減法運算子為雙目運算子。但「-」也可作負值運算子,此時為單目運算,如-x,-5等具有左結合性。

乘法運算子

*雙目運算,具有左結合性。

除法運算子

/雙目運算具有左結合性。參與運算量均為整型時,結果也為整型,捨去小數。如果運算量中有乙個是實型,則結果為雙精度實型。

求餘運算子(模運算子)

%雙目運算,具有左結合性。要求參與運算的量均為整型。 求餘運算的結果等於兩數相除後的餘數。

【例3-14】

main

()

本例中,20/7,-20/7的結果均為整型,小數全部捨去。而20.0/7和-20.0/7由於有實數參與運算,因此結果也為實型。

【例3-15】

main

()

本例輸出100除以3所得的餘數1。

2) 算術表示式和運算子的優先順序和結合性

表示式是由常量、變數、函式和運算子組合起來的式子。

乙個表示式有乙個值及其型別, 它們等於計算表示式所得結果的值和型別。表示式求值按運算子的優先順序和結合性規定的順序進行。單個的常量、變數、函式可以看作是表示式的特例。

算術表示式是由算術運算子和括號連線起來的式子。

表示式/優先順序/結合性

說明算術表示式

用算術運算子和括號將運算物件(也稱運算元)連線起來的、符合c語法規則的式子。以下是算術表示式的例子:

a+b(a*2)/c

(x+r)*8-(a+b)/7

++isin(x)+sin(y)

(++i)-(j++)+(k--)

運算子的優先順序

c語言中,運算子的運算優先順序共分為15級。1級最高,15級最低。在表示式中,優先順序較高的先於優先順序較低的進行運算。而在乙個運算量兩側的運算子優先順序相同時,則按運算子的結合性所規定的結合方向處理。

運算子的結合性

c語言中各運算子的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算子的結合性是自左至右,即先左後右。如有表示式x-y+z則y應先與「-」號結合,執行x-y運算,然後再執行+z的運算。這種自左至右的結合方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。 最典型的右結合性運算子是賦值運算子。如x=y=z,由於「=」的右結合性,應先執行y=z再執行x=(y=z)運算。c語言運算子中有不少為右結合性,應注意區別,以避免理解錯誤。

3) 強制型別轉換運算子

其一般形式為: (型別說明符)  (表示式)

其功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。例如:

(

float

) a;

/* 把a轉換為實型 */

(int

)(x+y);

/* 把x+y的結果轉換為整型 */

4) 自增、自減運算子

自增1,自減1運算子:自增1運算子記為「++」,其功能是使變數的值自增1;自減1運算子記為「--」,其功能是使變數值自減1。

自增1,自減1運算子均為單目運算,都具有右結合性。可有以下幾種形式:

在理解和使用上容易出錯的是i++和i--。 特別是當它們出在較複雜的表示式或語句中時,常常難於弄清,因此應仔細分析。

【例3-16】

main

()

i的初值為8,第2行i加1後輸出故為9;第3行減1後輸出故為8;第4行輸出i為8之後再加1(為9);第5行輸出i為9之後再減1(為8) ;第6行輸出-8之後再加1(為9),第7行輸出-9之後再減1(為8)。

【例3-17】

複製

純文字新視窗

main

()

這個程式中,對p=(i++)+(i++)+(i++)應理解為三個i相加,故p值為15。然後i再自增1三次相當於加3故i的最後值為8。而對於q 的值則不然,q=(++j)+(++j)+(++j)應理解為q先自增1,再參與運算,由於q自增1三次後值為8,三個8相加的和為24,j的最後值仍為8。

C 算術運算子與算術表示式

在本章中主要介紹算術運算子與算術表示式,賦值運算子與賦值表示式,逗號運算子與逗號表示式,其他運算子將在以後各章中陸續介紹。常見算數運算子 運算子說明舉例 加法運算子,或正值運算子 3 5,3 減法運算子,或負值運算子 5 2,3 乘法運算子 3 5 除法運算子 5 3 模運算子,或稱求餘運算子 兩側...

C語言及程式設計 算術運算子與算術表示式

題一 分離各位數 寫乙個程式,輸入x 三位數 輸出其個 十 百位數,用空格隔開 樣例輸入 768 樣例輸出 8 6 7 include int main 題二 分離整數和小數部分 include int main 執行結果 123.456 123456題三 如何買玫瑰花 小慧過生日,小明 小明真忙 ...

算術運算子和算術表示式(初學者)

1 c語言的運算子可以分為以下幾類 1.算術運算子 加 減 乘 除 求餘 自增 自減 2.關係運算子 大於 小於 等於 大於等於 小於等於 不等於 3.邏輯運算子 與 或 非 4.位操作運算子 參與運算的量,按二進位制位進行運算。位與 位或 位非 位異或 左移 右移 5.賦值運算子 用於賦值運算,分...