1.運算子
用於進行某種運算的符號
通過涉及到的數目分為單目運算子(i++),雙目運算子(+ - * / % …),三目運算子( (判斷)? a:b)
在c語言中a+b 是不等價與 b+a 的,ru:(i++)+ (i+j) 與 (i+j)+ (i++)
c語言運算優先順序,單目運算子 > 算術運算子 > 關係運算子 > 邏輯運算子 > 條件運算子 > 賦值運算子 > 逗號運算子
1)算術運算子
進行算術運算的符號,
++-- :單目運算子
注意(++i)與(i++)是不同的。i++先輸出後運算,++i先運算後輸出
int i=1;
printf
("%d"
,i++);
// 1 printf("%d",++i); // 2
執行完此語句後i的值都是2;
+-*/% 雙目運算子
/ 得到的結果為商,如3
/2 得到的結果為 1.5
/2的結果為2
% 得到的結果為餘數 如6
%4 得到的結果為 2
當涉及到兩個不同型別的資料,如 double 和 int ,需要向精準度高的轉換。
2)關係運算子
用來判斷兩個數的大小關係
<
>
>=
<=
==(等於) !=
(不等於)
關係成立結果為1,不成立結果為0
值得注意的是5
>
4>
3 這種寫法結果為0,步驟為,5
>
4結果為1,然後1
>
3結果為0
3)邏輯運算子
!邏輯非 單目運算子 「取反」
&& 邏輯與 || 邏輯或 雙目運算子 具有(惰性運算!)
邏輯真:(非0或者1)
邏輯假:0
4)位運算子
按照bit位進行運算
& 按位與 都是1則為1
| 按位或 有1就為1
^ 按位異或 不同為1,相同為0
~ 按位取反 1變成0,0變成1
《按位左移 >>按位右移
左移 右邊補0,捨棄超出的高位元組
右移 丟棄右邊的低位元組,高位元組,有符號補符號位,無符號(定義為unsigned)補0
兩個數交換,不涉及到第三個元素:
5)賦值運算子:
= 雙目運算子,優先順序只比逗號運算子高
賦值運算子要求左邊的運算元必須有左值(可寫的位址)
5=5 error
2+3=5 error
i++=5 error 左邊不能為表示式
a +=5
+=6; error
6)條件運算子
expression ? a :b
如果表示式expression值為真,整個表示式的值就是a的值
如果表示式expression值為假,整個表示式的值就是b的值
7)逗號運算子
優先順序最低,結合性從左至右 ,最後的值為最後乙個的值
a =(a =
6,b =5)
;//a = =5
求值順序:
先求表示式1的值,再表示式2的值 。。。。。最後
求表示式n的值。
整個逗號表示式的值就是表示式n的值。
8) 指標表示式
&取位址 *取值
9)求位元組運算子 sizeof
單目運算子 ,求乙個物件或型別所佔空間位元組數。
sizeof(x) 求x的型別,不要求x存在,但是要求x的型別是確定的
10) 分量運算子:
求結構體中成員變數(分量)
.->
11) 下標運算子
[]int a[10]
; a[
0] a[1]
12) 強制轉換運算子
(型別)
eg:(unsigned
char
)255
13) 其他
2.表示式
什麼是表示式?
表達某個意思的式子
在c語言,表示式一般是指用運算子連線起來的式子
表示式一定會有乙個值,這個值就是上面的表示式的"某個意思"
a =5 a =
5, n =
6
C語言運算子與表示式
運算子是一種向變異程式說明乙個特定的數學或邏輯運算的符號。主要有三大類 算術運算子 關係運算與邏輯運算子 按位運算子。除此之外,還有一些用於完成特殊任務的運算,如賦值運算子 條件運算子 逗號運算子等。c語言的運算子歸納如下 1 算術運算子 2 關係運算子 3 邏輯運算子 4 位運算子 按位與 運算子...
C 運算子與表示式
作用 用於處理四則運算 算術運算子包括以下符號 運算子術語示例結果 正號 33 負號 3 3 加 10 515 減10 55 乘10 550 除10 52 取模 取餘 10 31 前置遞增 a 2 b a a 3 b 3 後置遞增 a 2 b a a 3 b 2 前置遞減 a 2 b a a 1 b...
C 運算子與表示式
作用 用於處理四則運算 算術運算子包括以下符號 運算子術語示例結果 正號 33 負號 3 3 加 10 515 減10 55 乘10 550 除10 52 取模 取餘 10 31 前置遞增 a 2 b a a 3 b 3 後置遞增 a 2 b a a 3 b 2 前置遞減 a 2 b a a 1 b...