C語言基礎(1)——運算符與表達式

運算符

根據運算符性質分類:
算術運算符,關係運算符,邏輯運算符,賦值運算符等。
根據操作數的個數進行分類:
僅僅需要一個操作數的個數的運算符爲單目運算符;需要兩個操作數個數的爲雙目運算符;同理,三目運算符需要三個操作數。

表達式

運算符和運算對象(操作數)按一定規則結合在一起就構成了表達式

1.算術運算符

算術運算符及其含義表 1 算術運算符及其含義
(1)兩個整數做除法運算,結果仍爲整數,捨去小數部分的值。例如:
6/4=1
在這裏6/4的結果的小數部分就已經被捨去了;但當參與運算的操作數只要有一個是實型數據,則結果就爲double型。例如:
6/4=1.5
(2)求餘運算符’%'要求參與運算的兩個操作數爲整數。其中左側爲被除數,右側爲除數,運算的結果爲整除後的餘數,餘數的符號與被除數的符號相同。
(3)c語言中的相乘只能用 * 表示,不能把 * 省略,或者用X表示。
(4)數學表達式在書寫中會出現“【】”和“{}”表示運算順序,但在c語言表達式中式不允許的。例如:
[(a+b) * c]/(2/a)
該表達式是錯誤的。
(4)表達式中出現了c語言不允許的標識符。例如:
2 * π * r是錯誤的,應該表達成 2 * 3.14159 * r
或者先定義符號常量PI:
#define PI 3.14159
則表達式可以寫成:
2 * PI * r
(5)算術運算符優先級與結合性:
在這裏插入圖片描述

2.賦值運算符

簡單賦值運算符“=”

“=”是一個雙目運算符,具有右結合性。格式爲:
變量名=表達式
(1)“=”右邊爲任何合法的表達式,也可以是另一個賦值表達式,即“=”可以連用。如:
a=b=c=d=3;
(2)“=”左邊只能是變量,不能是算術表達式或常量。例如:
45+x=100
45=x+y 都是錯誤的。

複合賦值運算符

在簡單“=”前面加一個雙目運算符後,就構成了複合賦值運算符。
涉及算術運算的複合賦值運算符共有5個:+=,-=,*=,/=,%=;
涉及位運算的賦值運算符共有5個:&=,|=,^=,<<=,>>=。
當複合運算符右側是一個表達式時,由c語言編譯系統給該表達式自動加括號,即先計算這個表達式的值,再進行復合賦值運算。

3.增1,減1運算符

增1,減1運算符都是單目運算符,具有右結合性。
增1,減1運算符的運算過程
表 2 增1,減1運算符的運算過程
(1)只需要一個操作數,操作數只能是變量,不能是常量或者表達式。例如:
2++
(a+b)++ 都是錯誤的。
(2)++和–的結合方向都是自右向左。例如:

int i;
printf("%d\n",-i++);

負號運算符-與++優先級相同,這時就要根據他們的結合性來確定運算順序,單目運算符的結合方向是從右向左。即執行完Printf語句後,表達式-i++的值爲-3,i的值爲4。
(3)一行語句中最好出現一次增1或減1運算,因爲過多的增1,減1混合運算會使程序的可讀性變差。

4.關係運算符

關係運算符
表 2 關係運算符
用關係運算符將兩個操作數連接起來組成的表達式稱爲關係表達式。關係表達式通常用與表達一個判定條件的真與假。一個條件判斷的結果只能有兩種可能:成立與不成立。如果比較後關係式成立,則稱爲真,用非0表示;如果比較後關係式不成立,則稱爲假,用0表示。
(1)“==”與“=”是兩種完全不同的運算符,前者爲關係運算符的等於運算符,後者爲賦值運算符。
(2)數學表達式與c語言關係表達式的含義不盡相同
a=3,b=2,c=1,a>b>c
先計算關係表達式a>b,成立,所以用1表示;再計算1>c,不成立(爲假),所以用0表示。因此,最後結果爲0。

5.邏輯運算符

在這裏插入圖片描述
運算符!是單目運算符,在邏輯運算符中優先級最高,優先級其次是&&,最後是||。
用邏輯運算符連接操作數組成的表達式稱爲邏輯表達式。邏輯表達式的值只有真和假,用1表示真,用0表示假。
邏輯運算
上表爲彙總的邏輯運算。

6.條件運算符

條件運算符是c語言中唯一一個三目運算符,格式如下:
表達式1?表達式2:表達式3
該表達式執行過程是什麼樣的呢?
(1)先求第一個表達式的值。
(2)當第一個表達式值不爲0時,求第二個表達式的值;當第一個表達式值爲0時,求第三個表達式的值。
(3)條件表達式的結果是上步所求的第二個或第三個表達式的值。例如:
x>y?100:500;如果x>y成立,則條件表達式的值爲100;否則條件表達式的值爲500。

7.強制類型轉換運算符

強制類型轉換運算符可以把表達式的結果硬性轉換爲一個用戶指定的類型值。他是一個單目運算符。例如:
(int)9.3
是將double類型的常量強制性轉換爲int類型的常量,結果值爲9。

8.逗號運算符

逗號運算符“,“,也稱爲順序運算符。用逗號運算符鏈接起來的式子稱爲逗號表達式。格式爲:表達式1,表達是,……,表達式n
逗號表達式按照從左向右的順序逐個求解表達式,而整個表達式的值就是表達式n的值。例如:a=1,++a,a+10;
首先求解表達式1,a的值被賦值爲1,然後求解表達式2,執行後,表達式2的++a的值爲2,a的值也爲2。最後,求解表達式3,a+10的值爲12。所以逗號表達式的結果,爲表達式3的結果,即12。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章