|
|
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 | 排序 | , | 逗號分隔符 | 從左到右 |
常量 | 目錄 | 基本輸入/輸出 |