C++<第三篇>:運(yùn)算符

根據(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

[本章完...]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市围橡,隨后出現(xiàn)的幾起案子暖混,更是在濱河造成了極大的恐慌,老刑警劉巖翁授,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拣播,死亡現(xiàn)場(chǎng)離奇詭異晾咪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)贮配,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門谍倦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人泪勒,你說(shuō)我怎么就攤上這事昼蛀。” “怎么了圆存?”我有些...
    開(kāi)封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵叼旋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我沦辙,道長(zhǎng)夫植,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任油讯,我火速辦了婚禮详民,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陌兑。我一直安慰自己沈跨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布诀紊。 她就那樣靜靜地躺著谒出,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邻奠。 梳的紋絲不亂的頭發(fā)上笤喳,一...
    開(kāi)封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音碌宴,去河邊找鬼杀狡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贰镣,可吹牛的內(nèi)容都是我干的呜象。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼碑隆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恭陡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起上煤,我...
    開(kāi)封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤休玩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拴疤,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡永部,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呐矾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苔埋。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜒犯,靈堂內(nèi)的尸體忽然破棺而出组橄,到底是詐尸還是另有隱情,我是刑警寧澤愧薛,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布晨炕,位于F島的核電站衫画,受9級(jí)特大地震影響毫炉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜削罩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一瞄勾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弥激,春花似錦进陡、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至以蕴,卻和暖如春糙麦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丛肮。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工赡磅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宝与。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓焚廊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親习劫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咆瘟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容