|
|
5
賦給變數x
。賦值操作始終從右到左進行,絕不會反向操作。
|
|
y
中的值賦給變數x
。執行此語句時x
的當前值將被丟棄,並被y
的值替換。y
的值賦給了x
。因此,如果y
在稍後發生更改,也不會影響x
的新值。
|
|
a:4 b:7 |
a
和b
的最終值(分別為4和7)。請注意,即使我們之前聲明瞭a = b
,a
也沒有受到b
最終修改的影響。
|
|
y
被賦值為2與另一個賦值表示式(該表示式本身的值為5)相加的結果。它大致等同於:
|
|
y
。
|
|
x
、y
和z
;始終從右到左賦值。運算子 | 描述 |
---|---|
+ | 加法 (addition) |
- | subtraction (減法) |
* | 乘法 |
/ | 除法 |
% | 取模 |
%
)表示,給出兩個值相除的餘數。例如:
|
|
x
包含值2,因為11除以3的結果是3,餘數為2。表示式 | 等同於…… |
---|---|
y += x; | y = y + x; |
x -= 5; | x = x - 5; |
x /= y; | x = x / y; |
price *= units + 1; | price = price * (units+1); |
|
|
5 |
++
)和自減運算子(--
)將變數中儲存的值增加或減少一。它們分別等同於+=1
和-=1
。因此:
|
|
x
的值加一。++x
),也可以寫在變數名後面(x++
)。雖然在簡單表示式如x++
或++x
中,兩者含義完全相同;但在其他需要對自增或自減操作的結果進行求值的表示式中,它們的含義可能存在重要差異:如果自增運算子用作值的字首(++x
),則表示式的值將是x
增加後的最終值。另一方面,如果用作字尾(x++
),值也會增加,但表示式的值是x
在增加之前的值。請注意區別:示例 1 | 示例 2 |
---|---|
x = 3; |
x = 3; |
y
的值是x
增加後的值。而在示例2中,它是x
增加之前的值。運算子 | 描述 |
---|---|
== | 等於 |
!= | 不等於 |
< | 小於 |
> | 大於 |
<= | 小於或等於 |
>= | 大於或等於 |
|
|
a=2
,b=3
,c=6
,則:
|
|
=
,一個等號)與相等比較運算子(==
,兩個等號)不同;第一個(=
)將右側的值賦給其左側的變數,而第二個(==
)則比較運算子兩側的值是否相等。因此,在最後一個表示式((b=2) == a
)中,我們首先將值2
賦給了b
,然後將其與a
(也儲存著值2)進行了比較,結果為true
。!
運算子是C++的布林運算NOT運算子。它只有一個運算元,位於其右側,並對其進行取反,如果其運算元為true
則產生false
,如果其運算元為false
則產生true
。基本上,它返回其運算元求值結果的相反布林值。例如:
|
|
&&
和||
。&&
運算子對應於布林邏輯運算AND,當兩個運算元均為true
時為true
,否則為false
。以下面板顯示了運算子&&
求值表示式a&&b
的結果:&& 運算子(AND) | ||
---|---|---|
a | 和 b | a && b |
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
||
運算子對應於布林邏輯運算OR,當任一運算元為true
時為true
,僅當兩個運算元都為false
時才為false
。以下是a||b
的可能結果:|| 運算子(OR) | ||
---|---|---|
a | 和 b | a || b |
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
|
|
(5==5)||(3>6)
)中,C++首先評估5==5
是否為true
,如果是,則從不檢查3>6
是否為true
。這被稱為短路求值,對於這些運算子的工作方式如下:運算子 | 短路 |
---|---|
&& | 如果左側表示式為false ,則組合結果為false (右側表示式永遠不求值)。 |
|| | 如果左側表示式為true ,則組合結果為true (右側表示式永遠不求值)。 |
|
|
i
加一,但這僅在&&
左側的條件為true
時發生,因為否則,右側的條件(++i<n
)永遠不會被求值。true
,則返回一個值,如果表示式求值為false
,則返回另一個值。其語法是:condition ? result1 : result2
condition
為true
,則整個表示式求值為result1
,否則為result2
。
|
|
|
|
7 |
a
為2,b
為7,因此被求值的表示式(a>b
)不為true
,因此將問題標記後的第一個值(冒號後的值)b
(值為7)所替換。,
)用於分隔兩個或多個表示式,這些表示式包含在只能有一個表示式的地方。當需要對一組表示式進行求值以獲得一個值時,只考慮最右側的表示式。
|
|
b
,然後把b+2
賦給變數a
。所以,最後,變數a
將包含值5,而變數b
將包含值3。運算子 | 彙編等效 | 描述 |
---|---|---|
& | 與 (AND) | 按位與 |
| | 或 (OR) | 按位包含或 |
^ | 異或 | 按位異或 |
~ | 非 (NOT) | 一元補碼(位反轉) |
<< | SHL | 左移位 |
>> | SHR | 右移位 |
|
|
3.14
轉換為整數值(3
);小數部分被丟棄。這裡,型別轉換運算子是(int)
。在C++中執行相同操作的另一種方法是使用函式式表示法,將要轉換的型別作為表示式的字首,並將表示式括在括號中。
|
|
|
|
x
被賦為值1
,因為char
是一種大小為一位元組的型別。sizeof
返回的值是一個編譯時常量,因此它總是在程式執行之前確定的。
|
|
x
,因為%
運算子的優先順序高於+
運算子,並且總是先進行計算。表示式的部分可以透過括號括起來來覆蓋此優先順序順序,或使其意圖明確。請注意區別:
|
|
級別 | 優先順序組 | 運算子 | 描述 | 分組 |
---|---|---|---|---|
1 | 作用域 | :: | 作用域限定符 | 從左到右 |
2 | 字尾(一元) | ++ -- | 字尾自增/自減 | 從左到右 |
() | 函式形式 | |||
[] | 下標 | |||
. -> | 成員訪問 | |||
3 | 字首(一元) | ++ -- | 字首自增/自減 | 從右到左 |
~ ! | 按位非/邏輯非 | |||
+ - | 一元字首 | |||
& * | 引用/解引用 | |||
new delete | 分配/釋放 | |||
sizeof | 引數包 | |||
(型別) | C風格型別轉換 | |||
4 | 指標到成員 | .* ->* | 訪問指標 | 從左到右 |
5 | 算術:縮放 | * / % | 乘法、除法、取模 | 從左到右 |
6 | 算術:加法 | + - | 加法、減法 | 從左到右 |
7 | 位移 | << >> | 左移、右移 | 從左到右 |
8 | 關係 | < > <= >= | 比較運算子 | 從左到右 |
9 | 相等 | == != | 相等/不等 | 從左到右 |
10 | 與 | & | 按位與 | 從左到右 |
11 | 異或 | ^ | 按位異或 | 從左到右 |
12 | 或 | | | 按位或 | 從左到右 |
13 | 合取 | && | 邏輯與 | 從左到右 |
14 | 析取 | || | 邏輯或 | 從左到右 |
15 | 賦值級表示式 | = *= /= %= += -= | 賦值/複合賦值 | 從右到左 |
?: | 條件運算子 | |||
16 | 排序 | , | 逗號分隔符 | 從左到右 |
![]() 常量 | ![]() 目錄 | ![]() 基本輸入/輸出 |