C語言運算子簡單總結

2021-08-09 08:57:53 字數 3591 閱讀 8116

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就是...