1.4.2 加法、減法與乘法
程序使用內(nèi)置的算術(shù)運算符來實現(xiàn)加法(加號,+)、減法(減號,–)和乘法(星號,*)運算。圖1-4所示結(jié)果和預(yù)期一致。
每個算術(shù)運算符都是表達(dá)式的一部分。每個表達(dá)式都可以求出單個值。例如,表達(dá)式7 + 3求值得到10,然后發(fā)送給cout輸出。
1.4.3 理解整型與浮點型除法
接下來的一行代碼中使用斜線(/)來做除法運算。然而,輸出結(jié)果可能有點讓人出乎意料。根據(jù)C++的實現(xiàn)方式(以及該程序平臺),7除以3等于2。為什么?原因在于,整型(沒有小數(shù)部分的數(shù))的算術(shù)運算結(jié)果總是整型。因為7和3都是整型,所以結(jié)果也必須是整型,其小數(shù)部分被去除。
如果要得到保留小數(shù)部分的結(jié)果,那么至少需要有一個數(shù)是浮點型(帶小數(shù)部分的數(shù))。接下來一行代碼中表達(dá)式7.0 / 3.0的結(jié)果便保留了小數(shù)部分。這次結(jié)果更精確,是2.33333。
陷阱
您也許注意到7.0/3.0(2.33333)的結(jié)果雖然包含了小數(shù)部分,但這個結(jié)果仍然是被截短過的(真正的結(jié)果在十進(jìn)制小數(shù)點后面有無窮多個3) 。需要了解的是,計算機(jī)一般只存儲浮點數(shù)的有限個數(shù)的高位數(shù)字。然而,C++提供了不同種類的浮點數(shù)以滿足最苛刻的要求,甚至可以滿足計算密集型的3D游戲的要求。
1.4.4 使用取模運算符
接下來的一條語句使用的運算符可能比較陌生——取模運算符(%)。取模運算符返回整型除法的余數(shù)。在本例中,7 % 3結(jié)果為7 / 3的余數(shù)1。
1.4.5 運算符的優(yōu)先級
C++中的算術(shù)表達(dá)式和代數(shù)學(xué)中一樣從左到右依次求值。但是有些運算符的優(yōu)先級比較高,無論處于什么位置都將首先求值。乘法、除法和取模運算的優(yōu)先級相同,都高于加法和減法。
接下來的一行代碼演示了優(yōu)先級的作用。因為乘法的優(yōu)先級高于加法,所以首先計算乘法的結(jié)果。因此,表達(dá)式7 + 3*5等于7 + 15,結(jié)果為22。
如果需要首先計算較低優(yōu)先級的運算操作,可以使用括號,它比任何算術(shù)運算符的優(yōu)先級都高。所以在下一條語句中,表達(dá)式(7 + 3) * 5等于10 * 5,結(jié)果為50。
提示
C++運算符一覽表及其優(yōu)先級詳見附錄B。