操作符

2018-08-12 22:03 更新

操作符

操作符就是告訴編譯器來執(zhí)行數(shù)學(xué)或邏輯運(yùn)算操作的符號(hào)。C++ 有非常豐富的內(nèi)置操作符。提供如下幾類的操作符:

  1. 數(shù)學(xué)運(yùn)算操作符
  2. 關(guān)系運(yùn)算操作符
  3. 邏輯運(yùn)算操作符
  4. 位運(yùn)算操作符
  5. 賦值運(yùn)算操作符
  6. 復(fù)合運(yùn)算操作符

下面的章節(jié)將一一介紹數(shù)學(xué)、關(guān)系、邏輯、位運(yùn)算、賦值和其他操作符。

數(shù)學(xué)運(yùn)算操作符

下面的就是 C++ 語(yǔ)言所支持的數(shù)學(xué)運(yùn)算操作符:

假設(shè)變量 A 存儲(chǔ) 10,變量 B 存儲(chǔ) 20,那么:

運(yùn)算符 描述 例子
+ 兩個(gè)運(yùn)算數(shù)相加 A + B = 30
- 第一個(gè)運(yùn)算數(shù)減去第二個(gè)運(yùn)算數(shù) A - B = -10
* 運(yùn)算數(shù)相乘 A * B = 200
/ 分子除以分母 B / A = 2
% 模數(shù)運(yùn)算符,整除后的余數(shù) B % A = 0
++ 增量運(yùn)算符,整數(shù)值逐次加1 A++ = 11
-- 減量運(yùn)算符,整數(shù)值逐次減1 A-- = 9

關(guān)系運(yùn)算符

下面的就是 C++語(yǔ)言所支持的關(guān)系運(yùn)算操作符:

假設(shè)變量 A 存儲(chǔ) 10,變量 B 存儲(chǔ) 20,那么:

運(yùn)算符 描述 例子
== 檢查兩個(gè)運(yùn)算數(shù)的值是否相等,如果是,則結(jié)果為 true A == B 為 false
!= 檢查兩個(gè)運(yùn)算數(shù)的值是否相等,如果不相等,則結(jié)果為 true A != B 為 true
> 檢查左邊運(yùn)算數(shù)是否大于右邊運(yùn)算數(shù),如果是,則結(jié)果為 true A > B 為 false
< 檢查左邊運(yùn)算數(shù)是否小于右邊運(yùn)算數(shù),如果是,則結(jié)果為 true A < B 為 true
>= 檢查左邊運(yùn)算數(shù)是否大于或者等于右邊運(yùn)算數(shù),如果是,則結(jié)果為 true A >= B 為 false
<= 檢查左邊運(yùn)算數(shù)是否小于或者等于運(yùn)算數(shù),如果是,則結(jié)果為 true A <= B 為 true

邏輯運(yùn)算符

下面的就是 C++語(yǔ)言所支持的邏輯運(yùn)算操作符:

假設(shè)變量 A 存儲(chǔ) 1,變量 B 存儲(chǔ) 0,那么:

運(yùn)算符 描述 例子
&& 稱為邏輯與運(yùn)算符。如果兩個(gè)運(yùn)算數(shù)都非零,則結(jié)果為 true。 A && B 為 true
|| 稱為邏輯或運(yùn)算符。如果兩個(gè)運(yùn)算數(shù)中任何一個(gè)非零,則結(jié)果為 true。 A || B 為 true
! 稱為邏輯非運(yùn)算符。用于改變運(yùn)算數(shù)的邏輯狀態(tài)。如果邏輯狀態(tài)為 true,則通過邏輯非運(yùn)算符可以使邏輯狀態(tài)變?yōu)?false !(A && B) 為 false

位運(yùn)算符

位操作運(yùn)算是按位來進(jìn)行操作的。與、或、非和異或的真值表如下:

p q p&q p|q p^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假設(shè)變量 A 存儲(chǔ) 60,變量 B 存儲(chǔ) 13,那么:

下面的就是 C++ 語(yǔ)言所支持的位運(yùn)算操作符:

假設(shè)變量 A 存儲(chǔ) 60,變量 B 存儲(chǔ) 13,那么:

A = 0011 1100

B = 0000 1101

A&B = 0000 1100

A|B = 0011 1101

`A^B` = 0011 0001

~A  = 1100 0011
運(yùn)算符 描述 例子
& 稱為按位與運(yùn)算符。它對(duì)整型參數(shù)的每一個(gè)二進(jìn)制位進(jìn)行布爾與操作。 A & B = 12 .
| 稱為按位或運(yùn)算符。它對(duì)整型參數(shù)的每一個(gè)二進(jìn)制位進(jìn)行布爾或操作。 A | B = 61.
^ 稱為按位異或運(yùn)算符。它對(duì)整型參數(shù)的每一個(gè)二進(jìn)制位進(jìn)行布爾異或操作。異或運(yùn)算是指第一個(gè)參數(shù)或者第二個(gè)參數(shù)為true,并且不包括兩個(gè)參數(shù)都為 true 的情況,則結(jié)果為true。 (A ^ B) = 49.
~ 稱為按位非運(yùn)算符。它是一個(gè)單運(yùn)算符,對(duì)運(yùn)算數(shù)的所有二進(jìn)制位進(jìn)行取反操作。 ~B = -61 .
<< 稱為按位左移運(yùn)算符。它把第一個(gè)運(yùn)算數(shù)的所有二進(jìn)制位向左移動(dòng)第二個(gè)運(yùn)算數(shù)指定的位數(shù),而新的二進(jìn)制位補(bǔ)0。將一個(gè)數(shù)向左移動(dòng)一個(gè)二進(jìn)制位相當(dāng)于將該數(shù)乘以2,向左移動(dòng)兩個(gè)二進(jìn)制位相當(dāng)于將該數(shù)乘以4,以此類推。 A << 1 =120.
>> 稱為按位右移運(yùn)算符。它把第一個(gè)運(yùn)算數(shù)的所有二進(jìn)制位向右移動(dòng)第二個(gè)運(yùn)算數(shù)指定的位數(shù)。為了保持運(yùn)算結(jié)果的符號(hào)不變,左邊二進(jìn)制位補(bǔ) 0 或 1 取決于原參數(shù)的符號(hào)位。如果第一個(gè)運(yùn)算數(shù)是正的,運(yùn)算結(jié)果最高位補(bǔ) 0;如果第一個(gè)運(yùn)算數(shù)是負(fù)的,運(yùn)算結(jié)果最高位補(bǔ) 1。 A >> 1 = 15.
>>> 稱為 0 補(bǔ)最高位無符號(hào)右移運(yùn)算符。這個(gè)運(yùn)算符與>>運(yùn)算符相像,除了位移后左邊總是補(bǔ)0. A >>> = 15.

賦值運(yùn)算符

下面的就是C++語(yǔ)言所支持的賦值運(yùn)算操作符:

運(yùn)算符 描述 例子
= 簡(jiǎn)單賦值運(yùn)算符,將右邊運(yùn)算數(shù)的值賦給左邊運(yùn)算數(shù) C = A + B 將 A+B 的值賦給 C
+= 加等賦值運(yùn)算符,將右邊運(yùn)算符與左邊運(yùn)算符相加并將運(yùn)算結(jié)果賦給左邊運(yùn)算數(shù) C += A 相當(dāng)于 C = C + A
-= 減等賦值運(yùn)算符,將左邊運(yùn)算數(shù)減去右邊運(yùn)算數(shù)并將運(yùn)算結(jié)果賦給左邊運(yùn)算數(shù) C -= A 相當(dāng)于C = C - A
*= 乘等賦值運(yùn)算符,將右邊運(yùn)算數(shù)乘以左邊運(yùn)算數(shù)并將運(yùn)算結(jié)果賦給左邊運(yùn)算數(shù) C *= A 相當(dāng)于C = C * A
/= 除等賦值運(yùn)算符, 將左邊運(yùn)算數(shù)除以右邊運(yùn)算數(shù)并將運(yùn)算結(jié)果賦值給左邊運(yùn)算數(shù) C /= A 相當(dāng)于 C = C / A
%= 模等賦值運(yùn)算符,用兩個(gè)運(yùn)算數(shù)做取模運(yùn)算并將運(yùn)算結(jié)果賦值給左邊運(yùn)算數(shù) C %= A 相當(dāng)于 C = C % A
<<= 左移且賦值運(yùn)算符 C <<= 2 相當(dāng)于 C = C << 2
>>= 右移且賦值運(yùn)算符 C >>= 2 相當(dāng)于 C = C >> 2
&= 位與且賦值運(yùn)算符 C &= 2 相當(dāng)于 C = C & 2
^= 位異或且賦值運(yùn)算符 C ^= A 相當(dāng)于 C = C ^ A
|= 位或且賦值運(yùn)算符 C |= A 相當(dāng)于 C = C | A

復(fù)合運(yùn)算符

下面是 C++ 支持的其他運(yùn)算符:

操作符 描述
sizeof sizeof 操作符返回變量占用內(nèi)存的大小。比如,sizeof(a),a 是一個(gè)整數(shù)時(shí),返回 4
條件 ? X : Y 條件操作符:如果條件判斷為true,則返回 X,否則返回 Y.
, 逗號(hào)操作符:可以使操作順序執(zhí)行。整體逗號(hào)表達(dá)式的值就是逗號(hào)最后表達(dá)式的返回結(jié)果。
.(點(diǎn)) 和 ->(箭頭) 成員操作符:用于獲取類、結(jié)構(gòu)體或聯(lián)合體成員的引用。
轉(zhuǎn)換 轉(zhuǎn)換操作符:可以將數(shù)值類型轉(zhuǎn)成其他類型,比如,int(2.2000)將返回 2.
& 取地操作符:可以返回一個(gè)變量的地址。比如, &a 將會(huì)返回變量實(shí)際的內(nèi)存地址。
* 指針操作符:指向一個(gè)變量。比如 *var 意味著指向變量 var.

C++ 中操作符優(yōu)先級(jí)

運(yùn)算符優(yōu)先級(jí)確定表達(dá)式中項(xiàng)的分組。這會(huì)影響如何表達(dá)一個(gè)表達(dá)式。某些操作符比其他有更高的優(yōu)先級(jí),例如,乘法運(yùn)算符的優(yōu)先級(jí)高于加法操作符。

比如 x=7+3*2,這里x的值是13而不是20,因?yàn)槌朔▋?yōu)先級(jí)比加法高。所以應(yīng)該先執(zhí)行3乘2,然后再加7.

操作符的優(yōu)先級(jí)如下表,上方的優(yōu)先級(jí)比下方高。較高優(yōu)先級(jí)的操作符優(yōu)先進(jìn)行計(jì)算。

分類 操作符 操作順序
后綴運(yùn)算 () [] -> . ++ - - 從左到右
一元運(yùn)算 + - ! ~ ++ - - (type)* & sizeof 從右到左
乘法 * / % 從左到右
加法 + - 從左到右
移位 << >> 從左到右
相等 == != 從左到右
比較 < <= > >= 從左到右
位與 & 從左到右
異或 ^ 從左到右
位或 | 從左到右
邏輯與 && 從左到右
|| 邏輯或 從左到右
條件 ?: 從左到右
賦值 = += -= *= /= %=>>= <<= &= ^= |= 從右到左
逗號(hào) 從左到右
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)