1.算術運算子
+ :將兩個數從左向右進行相加運算
- :將兩個數從左向右進行相減運算
* :將兩個數從左向右進行相乘運算
/ :將兩個數從左向右進行除法運算,若兩數都為整數,則結果為整數部分;若有一為浮點數,則結
果為浮點數
% :對左運算元進行模右運算元運算,即算術求餘
++:自增運算,數值加1。b=++a, a先進行自增運算,再把結果賦值給b;b=a++, 先把a的值給b,a再進行自增運算。
- - :自減運算,數值減1。b=–a, a先進行自減運算,再把結果賦值給b;b=a- -, 先把a的值給b,
a再進行自減運算。
舉例:
#include
int main()
結果:
2.關係運算子
== :比較兩個運算元的值是否相等,相等為真,不等則為假。
!= : 比較兩個運算元數是否相等,不等為真,相等為假;
> :檢查左邊的數是否大於右邊的數,如果條件成立,則為真,否則為假。
< :檢查左邊的數是否小於右邊的數,如果條件成立,則為真,否則為假。
>= :檢查左邊的數是否大於等於右邊的數,如果條件成立,則為真,否則為假。
<= :檢查左邊的數是否小於等於右邊的數,如果條件成立,則為真,否則為假。
舉例:
#include
int main()
結果:
3.邏輯運算子
&& :邏輯與運算子,若兩數有一為假,結果為假,否則為真。
|| : 邏輯或運算子,若兩數有一為真,結果為真,否則為假。
! :邏輯非運算子,若運算元為真,結果為假,否則為真。
補充:a&&b&&c,若a為假,則不進行後面的運算,a||b||c,若a為真,則不進行後面的運算。
舉例:
#include
int main()
結果:
4.位運算子
& : 將兩個數的二進位制進行運算(0&1 = 0, 1&1 = 1, 0&0= 0)
| : 將兩個數的二進位制進行運算( 0|1 = 1, 0|0 = 0,1|1 = 1)
^ : 將兩個數的二進位制進行運算(1^1 = 0, 1^0 = 1, 0^0 = 0)
>> : 右移操作符,將乙個數補碼的二進位制位進行邏輯右移或者算術右移(若該數不是過大,右移一
位,表示式結果變為原來的1/2)
<< : 左移操作符,將乙個數補碼的二進位制位進行左移,低位補0(若該數不是過大,左移一位,表
達式結果變為原來的2倍)
~ : 將乙個數的二進位制進行取反操作(1變為0,0變為1)
補充:(正數的原始碼=補碼=反碼,負數的反碼:原始碼的符號位不變,其他位取反;補碼:反碼
+1。)
(邏輯右移: 右邊丟棄,左邊補0。算術右移:右邊丟棄,左邊補符號位。且移位方式取決
於編譯器)
舉例:
#include
int main()
結果:
5.賦值運算子
= : 將右邊運算元的值賦給左邊
+=: 加且賦值運算子,將左邊運算元加上右邊運算元的結果賦給左邊運算元
-=: 減且賦值運算子,將左邊運算元減上右邊運算元的結果賦給左邊運算元
*=: 乘且賦值運算子,將左邊運算元乘以右邊運算元的結果賦給左邊運算元
/=: 除且賦值運算子,將左邊運算元除以右邊運算元的結果賦給左邊運算元
%=: 求模且賦值運算子,將左邊運算元對右邊運算元求模的結果賦給左邊運算元
… …
舉例:
#include
int main()
結果:
6.其他操作符
sizeof() :求取運算元所佔空間大小(以位元組為單位,若括號中有運算,則不更新值,只將值作為判斷使用)
* : 間接訪問操作符
(a=0?1:0): (?:)條件表示式,a=0為真,將1賦給a,否則將0賦給a。
[ ] : 下標引用操作符
-> / . : 指向結構體成員運算子,使用乙個指向結構體或物件的指標訪問其內成員。
, : 逗號運算子。將兩個及以上的表示式結合起來,從左向右進行運算,整個表示式的值為最後一
個表示式的值。
**換型別)變數:強制型別轉換
舉例:
#include
#include
struct school
;int main()
; int b = 5;
int*p = &a[0];//將陣列a的位址賦給指標p
printf("\n陣列部分:\n");
printf("陣列a的所佔記憶體長度為: %d\n", sizeof(a));
printf("陣列a的位址為:%p\n", &a);
printf("p=&a[0]的值為:%p\n", p);
printf("陣列a的首元素位址為:%p\n", &a[0]);
printf("陣列a的首元素位址為:%p\n", a);
printf("\n強制型別轉換部分:\n");
b = (int)6.66;//強制型別轉換
printf("b=(int)6.66的結果是:%d\n", b);
printf("\n逗號運算子:\n");
b = (6+1, 7+1, 8+1);//逗號運算子
printf("b = (6+1, 7+1, 8+1)的結果是:%d\n", b);
printf("\n結構體:\n");
struct school school = ;//結構體
strcpy(school.address, "陝西西安臨潼\n");
printf("位址是:%s", school.address);
struct school *q=&school;
strcpy(q->name, "西安工程大學\n");
printf("名稱; %s", q->name);
(*q).telephone = 123456789;
return
0;}
結果:
C語言運算子總結心得
一 邏輯運算子 包括 邏輯與 邏輯或 邏輯非 邏輯運算子用於對包含關係運算子的表示式進行合併或取非 對於使用邏輯運算子的表示式,返回0表示 假 返回1表示 真 關於邏輯運算子的解釋 請注意 任何使用兩個字元做符號的運算子,兩字元之間不應有空格,即將 寫成 是錯誤的。假設乙個程式在同時滿足條件a 10...
C語言常用運算子 總結
注意左右運算型別一致 避免使用乘除運算子,cpu不一定支援,可能需要多個週期進行運算 取餘 n m res 0 m 1 範圍在0至m 1 常用的三個場景 1 取乙個範圍數 eg 給乙個任意的數字,得到乙個1 100以內的數字?m 100 1 res 2 得到m進製 的乙個個位數 3 迴圈資料結構的下...
C語言 運算子與 運算子
我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...