1運算符和表達式
C語言運算符是說明特定操作的符号,它是構造C語言表達式的工具。C語言的運算異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運算符處理。除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用于完成特殊任務的運算符,比如位運算符。
算數運算符:用于算數運算,包括 、-、* 、/等。
關系運算符:用于比較運算,包括>、<、==、!=等。
邏輯運算符:用于邏輯運算,包括 &&、||、!三種。
位操作運算符:按二進制位對位運算,包括&、|、~、<<等。
賦值運算符:用于賦值運算,包括=、 =、&=等。
條件運算符:三目運算符,用于條件求值(?:).
逗号運算符:用于把若幹表達式組合成一個表達式(,)。
指針運算符:用于取内容*和用于取地址&。
求字節數運算符:用于計算數據類型所占的字節數sizeof。
特殊運算符:()、[]、成員(->,.)等。
1.2運算符優先級
A.函數計算優先。
B.其次是強制類型轉換。
C.自增、自減和取反次之。
D.先乘除再加減。
E.有括号先算括号内的。
注:表達式中出現連續兩個運算符時最好用空格隔開,如a b要寫成:a b或a b。同一優先級的運算符,運算次序由結合方向所決定。
也可以這樣記:!> 算術運算符 > 關系運算符 > && > || > 賦值運算符
2數據類型轉換
2.1強制類型轉換:就是顯示的将表達式轉換成所需類型。
方式1:(類型名)(表達式).
方式2:(類型名)表達式.
例:強制類型轉換。
注:強制類型轉換不會改變原來的變量和表達式的類型屬性,隻是轉換成所需類型使用。
2.2隐含類型轉換:整型、單精度型和雙精度型的不同數值類型可以混合運 算,在運算過程中就有隐式類型轉換。
隐式類型轉換的規則就是:從低向高轉換,例如char和short可以轉 換為int。
3算術運算符與算術表達式
3.1基本算術運算符:包括 、-、*、/、%五個運算符。
3.2特殊的算術運算符:自加和自減。
前綴形式:先對運算對象自增或自減,再引用運算對象的值作為表達式 的值。
後綴形式:先引用運算對象的值作為表達式的值,再對運算對象自增或 自減。示例:
a 等價于a=a 1,--a等價于a=a-1;
a 等價于a=a 1,a--等價于a=a-1;
注:可以看出單獨使用時沒有區别,但是在表達式中對表達式影響不同。
示例代碼:
4賦值運算符與賦值表達式
4.1簡單的賦值運算符
簡單賦值的作用就是将一個表達式的值賦給一個變量存儲起來,例如a=4;
注:賦值運算的左邊必須是變量;
賦值運算優先級比較低,僅優先于,;
4.2複合賦值運算符
就是把運算和賦值結合在一起,例如 =、-=等。
例如:m =3 等價于 m=m 3;
4.3賦值表達式的運算
使用表達式應該注意的情況:
4.3.1複合的賦值運算符。
示例代碼:
5.邏輯運算符
邏輯運算符是根據表達式的值來返回真值或是假值。其實在C語言中沒有所謂的真值和假值,隻是認為非0為真值,0為假值。
符号功能
例如:
當表達式進行&&運算時,隻要有一個為假,總的表達式就為假,隻有當所有都為真時,總的式子才為真。當表達式進行||運算時,隻要有一個為 真,總的值就為真,隻有當所有的都為假時,總的式子才為假。邏輯非(!)運算是把相應的變量數據轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若 原先為真,則邏輯非以後為假。
還有一點很重要,當一個邏輯表達式的後一部分的取值不會影響整個表達式的值時,後一部分就不會進行運算了。例如:
因為a=2,為真值,所以不管b-1是不是真值,總的表達式一定為真值,這時後面的表達式就不會再計算了。
6 關系運算符
關系運算符是對兩個表達式進行比較,返回一個真/假值。
符号功能
這些運算符大家都能明白,主要問題就是等于==和賦值=的區别了。
一些剛開始學習C語言的人總是對這兩個運算符弄不明白,經常在一些簡單問題上出錯,自己檢查時還找不出來。看下面的代碼:
if(Amount=123) ……
很 多新人都理解為如果Amount等于123,就怎麼樣。其實這行代碼的意思是先賦值Amount=123,然後判斷這個表達式是不是真值,因為結果為 123,是真值,那麼就做後面的。如果想讓當Amount等于123才運行時,應該if(Amount==123) ……
7 條件運算符
條件運算符(?:)是C語言中唯一的一個三目運算符,它是對第一個表達式作真/假檢測,然後根據結果返回兩外兩個表達式中的一個。
<表達式1>?<表達式2>:<表達式3>
在運算中,首先對第一個表達式進行檢驗,如果為真,則返回表達式2的值;如果為假,則返回表達式3的值。
例如:
8 逗号運算符
C語言中,多個表達式可以用逗号分開,其中用逗号分開的表達式的值分别結算,但整個表達式的值是最後一個表達式的值。
假設:
對于第一行代碼,有三個表達式,用逗号分開,所以最終的值應該是最後一個表達式的值,也就是d 3,為8,所以a=8。對于第二行代碼,那麼也是有三個表達 式,這時的三個表達式為a2= b、c--、d 3,(這是因為賦值運算符比逗号運算符優先級高)所以最終表達式的值雖然也為8,但a2=3。
需要更多學習筆記幹貨的小夥伴、歡迎關注公衆号【老九學堂】(づ ̄3 ̄)づ╭❤~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!