【老九學堂】【初識C語言】C語言中的運算子
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。
安裝遇到問題,可加老九君個人QQ:614940318,請備註來自CSDN
老九學堂免費C、C++、Java課程地址:https://study.163.com/courses-search?keyword=老九學堂