C語言 運算子

2022-09-12 12:27:14 字數 4748 閱讀 8147

1.算術運算子

假設a=6,b=4。

運算子描述例項+

兩個數相加

a + b 結果為 10

-第乙個數減去第二個數

a - b 結果為 2

*兩個數相乘

a * b 結果為 24

/第乙個數除以第二個數

a / b 結果為 1

%取模,第乙個數除以第二個數的餘數

a % b 結果為 2

++自增運算子,值增加 1

a++ 結果為 7

--自減運算子,值減少 1

b-- 結果為 3

示例**:

#includeint

main()

執行結果:

算術運算子

a=6,b=4

a+b=10

a-b=2

a*b=24

a/b=1

a%b=2

a++ :7

b-- :3

2.關係運算子

假設a=6,b=4。

運算子

描述

例項

==判斷兩個值是否相等,相等則為真

a==b 返回假

!=判斷兩個值是否相等,不相等則為真

a!=b 返回真

>

判斷左邊的值是否大於右邊的值,是則為真

a>b 返回真

<

判斷左邊的值是否小於右邊的值,是則為真

a>=

判斷左邊的值是否大於等於右邊的值,是則為真

a>=b 返回真

<=

判斷左邊的值是否小於等於右邊的值,是則為真

a<=b 返回假

示例**:

#includeint

main()

執行結果:

關係運算子,0為假,1為真,非0為真

a=6,b=4

a==b的值:0

a!=b的值:1

a>b的值:1a0

a>=b的值:1

a<=b的值:1

3.邏輯運算子

假設a=1(即值為真),b=0(即值為假)。

運算子描述

例項&&

邏輯與。如果兩個值都非0,則為真。

(a && b) 為假。

||邏輯或。如果兩個值有乙個非0,則為真。

(a || b) 為真。

!邏輯非。真的邏輯非為假,假的邏輯非為真。

!a 為假  !b 為真

示例**:

#includeint

main()

執行結果:

邏輯運算子,0為假,1為真,非0為真

a=1,b=0

a&&b的值:0

a||b的值:1

!a的值:0

4.位運算子

位運算子有&(位與and)、|(位或or) 、^(位異或xor)、~(取反not)ab

a&ba|b

a^b~a00

0001

0101

1111

1100

1001

10運算子描述例項&

按位與操作,按二進位制位進行"與"運算。運算規則:

0&0=0;0&1=0;1&0=0;1&1=1;

(a & b) 將得到 12,即為 0000 1100

|按位或運算子,按二進位制位進行"或"運算。運算規則:

0|0=0;0|1=1;1|0=1;1|1=1;

(a | b) 將得到 61,即為 0011 1101

^異或運算子,按二進位制位進行"異或"運算。運算規則:

0^0=0;0^1=1;1^0=1;1^1=0;

(a ^ b) 將得到 49,即為 0011 0001

~取反運算子,按二進位制位進行"取反"運算。運算規則:

~1=-2;~0=-1;

(~a ) 將得到 -61,即為 1100 0011,乙個有符號二進位制數的補碼形式。

5.移位運算子

運算子描述

例項<<

二進位制左移運算子。將乙個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)。

a << 2 將得到 240,即為 1111 0000

>>

二進位制右移運算子。將乙個數的各二進位制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

a >> 2 將得到 15,即為 0000 1111

示例**:

#includeintmain()

執行結果:

位運算子

a=60,b=13a&b的值:12a|b的值:61a^b的值:49

~a的十進位制值:-61移位運算子

a=60,b=13a<<2的值:240a>>2的值:15

6.賦值運算子

運算子描述例項=

簡單的賦值運算子,把右邊運算元的值賦給左邊運算元

c = a + b 將把 a + b 的值賦給 c

+=加且賦值運算子,把右邊運算元加上左邊運算元的結果賦值給左邊運算元

c += a 相當於 c = c + a

-=減且賦值運算子,把左邊運算元減去右邊運算元的結果賦值給左邊運算元

c -= a 相當於 c = c - a

*=乘且賦值運算子,把右邊運算元乘以左邊運算元的結果賦值給左邊運算元

c *= a 相當於 c = c * a

/=除且賦值運算子,把左邊運算元除以右邊運算元的結果賦值給左邊運算元

c /= a 相當於 c = c / a

%=求模且賦值運算子,求兩個運算元的模賦值給左邊運算元

c %= a 相當於 c = c % a

<<=

左移且賦值運算子

c <<= 2 等同於 c = c << 2

>>=

右移且賦值運算子

c >>= 2 等同於 c = c >> 2

&=按位與且賦值運算子

c &= 2 等同於 c = c & 2

^=按位異或且賦值運算子

c ^= 2 等同於 c = c ^ 2

|=按位或且賦值運算子

c |= 2 等同於 c = c | 2

示例**:

#includeint

main()

執行結果:

賦值運算子

a=21

c=a運算,c 的值 = 21

c+=a運算,c 的值 = 42

c-=a運算,c 的值 = 21

c*=a運算,c 的值 = 441

c/=a運算,c 的值 = 21

a=21,c=200

c%=a運算,c 的值 = 11

c<<=a運算,c 的值 = 44

c>>=a運算,c 的值 = 11

c&=a運算,c 的值 = 2

c^=a運算,c 的值 = 0

c|=a運算,c 的值 = 2

7.其他運算子

運算子描述

例項sizeof()

返回變數的大小。

sizeof(a) 將返回 4,其中 a 是整數。

&返回變數的位址。

&a; 將給出變數的實際位址。

*指向乙個變數。

*a; 將指向乙個變數。

? :條件表示式

如果條件為真 ? 則值為 :前的值 ; 否則值為 :後的值。

示例**:

#includeint

main()

執行結果:

變數 a 的大小 =4位元組

變數 b 的大小 =2位元組

變數 c 的大小 =8位元組

a 的值是

4*ptr 是 4

b 的值是

30b 的值是

20

8.c語言中運算子優先順序

類別 運算子 

結合性 

字尾 () -> . ++ - -  

從左到右 

一元 + - ! ~ ++ - - (type)* & sizeof 

從右到左 

乘除 * / % 

從左到右 

加減 + - 

從左到右 

移位 << >> 

從左到右 

關係 < <= > >= 

從左到右 

相等 == != 

從左到右 

位與 and 

& 從左到右 

位異或 xor 

^ 從左到右 

位或 or 

| 從左到右 

邏輯與 and 

&& 從左到右 

邏輯或 or 

|| 從左到右 

條件 ?: 

從右到左 

賦值 = += -= *= /= %=>>= <<= &= ^= |= 

從右到左 

逗號 , 

從左到右 

#includeint

main()

C語言 運算子與 運算子

我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...

C語言 運算子和 運算子

變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...

C語言運算子

1級優先順序左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 字尾增量運算子 字尾增量運算子 2級優先順序右結合 邏輯非運算子 按位取反運算子 字首增量運算子 字首增量運算子 負號運算子 型別 型別轉換運算子 指標運算子 位址與運算子 sizeof 長度運算子 3級優先順序左結合 ...