2.4 運算符和表達式
1運算符和表達式的概念
C+ +語言中的運算符又稱為操作符,是用來對數據進行運算的符號。
C+ +語言中的運算符可以根據其運算分量個數的多少分為單目(或一元)運算符、雙目(或二元)運算符和三目(或三元)運算符3類。
運算符可能是一個字符,也可能由兩個或三個字符組成,還有一些運算符是C+ +關鍵字。
2運算類型與運算符
C+ +包含多種不同種類的運算。每一種運算與其他運算的區(qū)別在于以下3個方面:
(1)參加運算的運算分量的數量和類型;
(2)運算結果的數據類型;
(3)運算的具體操作。
3賦值運算
賦值運算是一種雙目運算,其形式為:
<變量名>=<表達式>
右運算分量為一個表達式。“=”為賦值運算符(與數學中的等號含義不同)。左運算分量為與右運算分量類型相同的變量。
賦值運算的具體操作為:先計算右端表達式的值,然后把該值賦給左端變量。
4算術運算符和算術表達式
算術運算是指int型、float型、double(也包括char型)的數值類數據計算后,得到同一類型數據的運算。算術運算中所使用的運算符稱為算術運算符。
單目算術運算符包括:-(單減)、+ +(增量)和- -(減量)。
單減運算的格式為:-<運算分量>
單減運算相當于對運算分量取相反數,例如:-a,-(x+y)。
增量運算有兩種形式。
前綴增量:+ +<運算分量>
后綴增量:<運算分量>+ +
雙目算術運算符包括:+(加)、-(減)、*(乘)、/(除)和%(取余)。它們的含義與數學上相同。該類運算的運算分量為任一種數值類型,即任一種整數類型和任一種實數類型。
由算術運算符(包括單目和雙目)連接運算分量而組成的式子稱為算術表達式。每個算術表達式的值為一個數值,其類型按照以下規(guī)則確定:
(1)當參加運算的兩個運算分量均為整型時(但具體類型可以不同,如一個為int型,另一個為char型),則運算結果為int型。
(2)當參加運算的兩個運算分量中至少有一個是單精度型,并且另一個不是雙精度型時,則運算結果為float型。
(3)當參加運算的兩個運算分量中至少有一個是雙精度型時,則運算結果為雙精度型。
5關系運算符和關系表達式
C+ +語言提供了6種關系運算符,它們是:
<(小于)、< =(小于等于)、>(大于)、> =(大于等于)、= =(等于)、! =(不等于)
這6種運算符都是雙目運算符,用來比較兩個運算分量的大小,運算結果為邏輯型值true或false(它們分別對應著整數1和0。由一個關系運算符連接前后兩個數值表達式而構成的式子稱為關系表達式,簡稱關系式。當一個關系式成立時,則計算結果為邏輯值是(true),否則為邏輯值假(false)
關系運算符的使用格式為:
<運算分量><關系運算符><運算分量>
6邏輯運算符和邏輯表達式
C+ +語言提供了3種邏輯運算符,它們是:
!(邏輯非)、&&(邏輯與)、(邏輯或)
其中,!為單目運算符,&&和為雙目運算符。
邏輯運算符的使用格式為:
<邏輯運算符!><運算分量>
<運算分量><邏輯運算符&&或><運算分量>
邏輯運算的具體操作步驟為:
(1)計算兩邊運算分量的值;
(2)若運算分量的值不是邏輯型,則自動轉換為邏輯型,即以0值為假(即false),非0值為真(即true);
(3)按不同邏輯運算符計算返回值。
7位運算
C+ +提供6種位運算符。
(1)“&”是按位與運算符,它將兩個運算分量的對應二進制位進行與操作;校0 和0與得0,0和1與得0,1和0與得0,1和1與得1。
(2)“|”是按位或運算符,它將兩個運算分量的對應二進制位進行或操作。其中,0和0或得0,0和1或得1,1和0或得1,1和1或得1。
(3)“^”是按位異或運算符,它將兩個運算分量的對應二進制位進行異或操作。其中,0和0異或得0,0和1異或得1,1和0異或得1,1和1異或得0。
(4)“>>”是按位右移運算符,由于右移的位數為右邊運算分量的值,所以右邊運算分量的值必須是一個整數。
(5)“<<”是按位左移運算符,由于左移的位數為右邊運算分量的值,所以右邊運算分量的值必須是一個整數。
(6)“~”是按位取反運算符,它將運算分量的對應二進制數的每一位進行取反操作。其中,0取反得1,1取反得0。
位運算符的使用格式:
<運算分量><雙目運算符><運算分量>
<單目運算符><運算分量>
8其他運算
(1)條件運算符
條件運算是C+ +中唯一的三目運算,與其對應的運算符?:稱為條件運算符。條件運算符的使用格式為:
<表達式1>?<表達式2>:<表達式3>
當計算有條件運算符構成的表達式時,首先計算<表達式1>,若其值非0,則計算出<表達式2>的值,并用這個值作為整個表達式的值;若<表達式1>的值為0,則計算出<表達式3>的值,并用這個值作為整個表達式的值。
(2)逗號運算符
C+ +中使用逗號運算符指明對多個表達式進行順序求值。逗號運算符的使用格式為:
<表達式1>,<表達式2>,……<表達式n>
其中,每個逗號都稱為逗號運算符,整個式子稱為逗號表達式。上述逗號表達式的求值步驟為:從左向右依次計算<表達式1>、<表達式2>…<表達式n>的值;將<表達式n>(即最右端的表達式)的值作為整個逗號表達式的值。
(3)sizeof運算符
使用運算符sizeof可以進行字長提取操作,因此sizeof運算符又稱為字長提取符,它的使用格式為:
sizeof(<運算分量>)
其中,sizeof為關鍵字;<運算分量>既可以是一個類型名,也可以是一個表達式,當作為<運算分量>的表達式只包含一個變量名時,圓括號()可以省略。
字長提取運算的結果為一個整數,該整數表示指定的類型或變量的字節(jié)長度,即在內存中占用的字節(jié)(Byte)數。
(4)圓括號運算符
C+ +中不僅將圓括號()歸為運算符,而且根據不同的使用方式,可以對圓括號運算符的功能作出以下3種不同的解釋:
、賵A括號用于函數調用。其格式為:
<函數名>(<實參表>)
、趫A括號用于強制類型轉換。其格式為:
(<類型名>)<表達式>
③圓括號用于類型構造。其格式為:
<類型名>(<表達式>)
類型構造是指使用圓括號中<表達式>的值來構造一個具有目標數據類型的值,要構造的目標數據類型由<類型名>指定。
、軘到M下標運算符:[](下標)。
⑤指針運算符:*(取地址)和&(值引用)。
⑥動態(tài)存儲分配運算符:new(分配)和delete(釋放)。
、咦饔糜蛳薅ㄟ\算符:::(類域或全局域)
9優(yōu)先級和結合性
根據運算符的優(yōu)先級和結合性,可以將表達式的計算順序規(guī)則總結為以下3條:
(1)優(yōu)先計算帶有括號的子表達式;
(2)在沒有括號的部分,依照運算符優(yōu)先級,由高到低進行計算;
(3)具有相同優(yōu)先級的運算符,按照結合性規(guī)定,依次進行計算。
C+ +運算符分成17個優(yōu)先級,優(yōu)先級數字越小,表示運算符優(yōu)先級越高。具有同一優(yōu)先級數字的運算符,優(yōu)先級相同。單目運算符、賦值運算符和復合賦值運算符是右結合的,其余所有運算符都是左結合的。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦: