根據(jù)使用運(yùn)算符的對(duì)象個(gè)數(shù),將運(yùn)算符分為單目運(yùn)算符甜熔、雙目運(yùn)算符圆恤、三目運(yùn)算符。
根據(jù)使用運(yùn)算符的對(duì)象之間的關(guān)系腔稀,C++ 將運(yùn)算符分為算術(shù)運(yùn)算符盆昙、關(guān)系運(yùn)算符、邏輯運(yùn)算符焊虏、賦值運(yùn)算符和逗號(hào)運(yùn)算符淡喜。
一、算術(shù)運(yùn)算符
算術(shù)運(yùn)算符包括加(+)诵闭、減(-)炼团、乘(*)、除(/)四則運(yùn)算疏尿,算術(shù)運(yùn)算符中有單目運(yùn)算符和雙目運(yùn)算符瘟芝。
表格如下:
操作符 | 功能 | 目數(shù) | 用法 |
---|---|---|---|
+ | 加法運(yùn)算符 | 雙目 | x + y |
- | 減法運(yùn)算符 | 雙目 | x - y |
* | 乘法運(yùn)算符 | 雙目 | x * y |
/ | 除法運(yùn)算符 | 雙目 | x / y |
% | 模運(yùn)算符 | 雙目 | x % y |
++ | 自增加 | 單目 | x++,++x |
-- | 自減少 | 單目 | x--润歉,--x |
加法運(yùn)算:
------------------------
int x = 1;
int y = 2;
int count = x + y;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = 3
減法運(yùn)算:
------------------------
int x = 1;
int y = 2;
int count = x - y;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = -1
乘法運(yùn)算:
------------------------
int x = 1;
int y = 2;
int count = x * y;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = 2
除法運(yùn)算:
------------------------
int x = 1;
int y = 2;
int count = y / x;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = 2
模運(yùn)算(取余運(yùn)算):
------------------------
int x = 2;
int y = 7;
int count = y % x;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = 1
自增加運(yùn)算:
------------------------
int x = 2;
int count = x++;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = 2
自增加運(yùn)算:
------------------------
int x = 2;
int count = ++x;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = 3
自減少運(yùn)算:
------------------------
int x = 2;
int count = x--;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = 2
自減少運(yùn)算:
------------------------
int x = 2;
int count = --x;
cout << "輸出的結(jié)果為:" << count << endl;
------------------------
count = 1
二模狭、關(guān)系運(yùn)算符
關(guān)系運(yùn)算符包括小于(<)、大于(>)踩衩、大于或等于(>=)嚼鹉、小于或等于(<=)、等于(==)驱富、不等于(!=)锚赤。
表格如下:
操作符 | 功能 | 目數(shù) | 用法 |
---|---|---|---|
< | 小于 | 雙目 | x < y |
> | 大于 | 雙目 | x > y |
>= | 大于或等于 | 雙目 | x >= y |
<= | 小于或等于 | 雙目 | x <= y |
== | 等于 | 雙目 | x == y |
!= | 不等于 | 雙目 | x != y |
代碼演示:
int x = 2;
int y = 5;
bool result1 = x < y;
bool result2 = x > y;
bool result3 = x <= y;
bool result4 = x >= y;
bool result5 = x == y;
bool result6 = x != y;
cout << "輸出的結(jié)果為:" << result1 << endl;
cout << "輸出的結(jié)果為:" << result2 << endl;
cout << "輸出的結(jié)果為:" << result3 << endl;
cout << "輸出的結(jié)果為:" << result4 << endl;
cout << "輸出的結(jié)果為:" << result5 << endl;
cout << "輸出的結(jié)果為:" << result6 << endl;
實(shí)際輸出結(jié)果分別是:1、0褐鸥、1线脚、0、0叫榕、1浑侥。
C++ 的 bool 類型輸出值為 0 或 1,0表示假(false)晰绎,1表示真(true)寓落。
三、邏輯運(yùn)算符
邏輯運(yùn)算符包括邏輯與(&&)荞下、邏輯或(||)伶选、邏輯非(!)。
表格如下:
操作符 | 功能 | 目數(shù) | 用法 |
---|---|---|---|
&& | 邏輯與 | 雙目 | x && y |
|| | 邏輯或 | 雙目 | x || y |
! | 邏輯非 | 單目 | !x |
邏輯運(yùn)算符的左右兩邊必須是bool類型或者整型數(shù)據(jù)尖昏。
邏輯與:左右兩邊仰税,只要有一個(gè)為false,那么結(jié)果就為false抽诉,否則為true陨簇;
邏輯或:左右兩邊,只要有一個(gè)為true迹淌,就為true塞帐;
邏輯非:結(jié)果與原有值相反;
x | y | x && y | x || y | !x | !y |
---|---|---|---|---|---|
false | false | false | false | true | true |
false | true | false | true | true | false |
true | false | false | true | false | true |
true | true | true | true | false | false |
四巍沙、賦值運(yùn)算符
賦值運(yùn)算符包括+=葵姥、-+、*=句携、/=榔幸、%=、<<=矮嫉、>>=削咆、&=、|=蠢笋、^=
表格如下:
操作符 | 功能 | 目數(shù) | 用法 |
---|---|---|---|
+= | 加法賦值 | 雙目 | x += y |
-= | 減法賦值 | 雙目 | x -= y |
*= | 乘法賦值 | 雙目 | x *= y |
/= | 除法賦值 | 雙目 | x /= y |
%= | 模運(yùn)算賦值 | 雙目 | x %= y |
<<= | 左移賦值 | 雙目 | x <<= y |
>>= | 右移賦值 | 雙目 | x >>= y |
&= | 按位與運(yùn)算并賦值 | 雙目 | x &= y |
|= | 按位或運(yùn)算并賦值 | 雙目 | x |= y |
^= | 按位異或運(yùn)算并賦值 | 雙目 | x ^= y |
其中拨齐,符合賦值運(yùn)算符相當(dāng)于簡(jiǎn)單賦值運(yùn)算 + 簡(jiǎn)單運(yùn)算
的組合。
x += y 相當(dāng)于 x = x + y
x -= y 相當(dāng)于 x = x - y
x *= y 相當(dāng)于 x = x * y
x /= y 相當(dāng)于 x = x / y
x %= y 相當(dāng)于 x = x % y
x <<= y 相當(dāng)于 x = x << y
x >>= y 相當(dāng)于 x = x >> y
x &= y 相當(dāng)于 x = x & y
x |= y 相當(dāng)于 x = x |= y
x ^= y 相當(dāng)于 x = x ^ y
五昨寞、位運(yùn)算符
位運(yùn)算符包括&瞻惋、|厦滤、^、~歼狼。
表格如下:
操作符 | 功能 | 目數(shù) | 用法 |
---|---|---|---|
& | 位邏輯與 | 雙目 | x & y |
| | 位邏輯或 | 雙目 | x | y |
^ | 位邏輯異或 | 雙目 | x ^ y |
~ | 取反運(yùn)算符 | 單目 | ~x |
位邏輯與:兩個(gè)二進(jìn)制按位與運(yùn)算掏导,只有都為1結(jié)果才為1;
位邏輯或:兩個(gè)二進(jìn)制按位或運(yùn)算羽峰,只要有一個(gè)為1趟咆,結(jié)果就為1;
位邏輯異或:兩個(gè)二進(jìn)制按位異或運(yùn)算梅屉,只有兩個(gè)數(shù)不同值纱,結(jié)果為1,否則為0坯汤;
取反運(yùn)算符:將0變成1虐唠,1變成0;
那么玫霎,位運(yùn)算到底是如何計(jì)算的呢凿滤?
假設(shè)x = 2, y = 5庶近,計(jì)算機(jī)時(shí)8位機(jī)翁脆;
為了方便計(jì)算,將這兩個(gè)數(shù)轉(zhuǎn)成二進(jìn)制鼻种。
就以按位與舉例:
00000010
& 00000101
------------
00000000
結(jié)果為0反番,按位與只有上下都是1結(jié)果才為1,否則為0叉钥。
按位取反:
~ 00000010
------------
11111101
2取反之后的結(jié)果為”11111101“罢缸,最高位為1,所以為負(fù)數(shù)投队,其余7位減1再取反得出最終結(jié)果枫疆。
11111101
- 00000001
------------
11111100
~11111100
------------
10000011
將”10000011“轉(zhuǎn)成十進(jìn)制是-3。
在計(jì)算機(jī)中敷鸦,不存在`原碼`和`反碼`的息楔,只有`補(bǔ)碼`,計(jì)算機(jī)中的運(yùn)算需要將`原碼`轉(zhuǎn)成`補(bǔ)碼`扒披,位運(yùn)算就是`補(bǔ)碼`之間的運(yùn)算值依。
如果`原碼`是正數(shù),那么`補(bǔ)碼`是它本身碟案;
如果`原碼`是負(fù)數(shù)愿险,那么`補(bǔ)碼` 是`原碼`的`反碼`再加1;
計(jì)算機(jī)中价说,計(jì)算之后的結(jié)果是`補(bǔ)碼`辆亏,如果該`補(bǔ)碼`的二進(jìn)制最左邊那一位是1风秤,那么它的`原碼`是`補(bǔ)碼`減去1,再取反褒链。如果最左邊的數(shù)是0唁情,那么`原碼`是`補(bǔ)碼`本身疑苔。
六甫匹、移位運(yùn)算符
移位運(yùn)算符包括<<、>>惦费,這兩個(gè)都是雙目運(yùn)算符兵迅。
(1)左移是將一個(gè)二進(jìn)制操作數(shù)按指定的移動(dòng)位數(shù)向左移,左邊溢出的位被丟棄薪贫,右邊的空位用0補(bǔ)充恍箭。
比如:5 << 2,將5向左移2位瞧省,相當(dāng)于 5 * 22
5的二進(jìn)制是:00000101
左移兩位就是:00010100
(2)右移是將一個(gè)二進(jìn)制的數(shù)按指定的位數(shù)向右移動(dòng)扯夭,右邊溢出的的位被丟棄,左邊高位的空格用0填充鞍匾。
比如:5 >> 2交洗,將5向右移2位,相當(dāng)于 5 / 22
5的二進(jìn)制是:00000101
右移兩位就是:00000001
六橡淑、條件運(yùn)算符
條件運(yùn)算符又稱三目運(yùn)算符构拳,是C++中唯一的三目運(yùn)算符。
格式是:<表達(dá)式1> 梁棠?<表達(dá)式2> :<表達(dá)式3>
如果表達(dá)式1為真置森,那么執(zhí)行表達(dá)式2,如果表達(dá)式1為假符糊,那么執(zhí)行表達(dá)式3凫海。
比如:a = 5 > 2 ? 8 : 9
5 > 2為真,那么a=8;
這種寫法可以優(yōu)化if...else代碼男娄。
七行贪、運(yùn)算符的優(yōu)先級(jí)
當(dāng)一個(gè)表達(dá)式中存在多個(gè)運(yùn)算符時(shí),這些運(yùn)算符的優(yōu)先級(jí)決定執(zhí)行順序沪伙,高優(yōu)先級(jí)的最先被執(zhí)行瓮顽。
操作符 | 名稱 | 優(yōu)先級(jí) |
---|---|---|
() [] -> . |
圓括號(hào) 下標(biāo) 取類或結(jié)構(gòu)分量 取類或結(jié)構(gòu)成員 |
1(最高優(yōu)先級(jí)) |
! ~ ++ -- - & * (類型) sizeof |
邏輯非 取反 自增加 自減少 取負(fù) 取地址 取內(nèi)容 強(qiáng)制類型轉(zhuǎn)換 長(zhǎng)度計(jì)算 |
2 |
* / % |
乘 除 求余 |
3 |
+ - |
加 減 |
4 |
<< >> |
左移 右移 |
5 |
< <= > >= |
小于 小于或等于 大于 大于或等于 |
6 |
== != |
恒等 不等于 |
7 |
& | 按位與 | 8 |
^ | 按位異或 | 9 |
| | 按位或 | 10 |
&& | 邏輯與 | 11 |
|| | 邏輯或 | 12 |
? : | 條件運(yùn)算 | 13 |
= /= %= += -= >>= <<= &= ^= |= |
賦值 除法運(yùn)算并賦值 取余運(yùn)算并賦值 加法運(yùn)算并賦值 減法運(yùn)算并賦值 右移運(yùn)算并賦值 左移運(yùn)算并賦值 按位與運(yùn)算并賦值 按位異或運(yùn)算并賦值 按位或運(yùn)算并賦值 |
14 |
, | 逗號(hào)(順序求值) | 15 |
[本章完...]