正文

類型、變量與標(biāo)準(zhǔn)(9)

通過游戲編程實(shí)戰(zhàn)教新手學(xué)C++編程 作者:(美)Michael Dawson


1.4.2  加法、減法與乘法

程序使用內(nèi)置的算術(shù)運(yùn)算符來實(shí)現(xiàn)加法(加號(hào),+)、減法(減號(hào),–)和乘法(星號(hào),*)運(yùn)算。圖1-4所示結(jié)果和預(yù)期一致。

每個(gè)算術(shù)運(yùn)算符都是表達(dá)式的一部分。每個(gè)表達(dá)式都可以求出單個(gè)值。例如,表達(dá)式7 + 3求值得到10,然后發(fā)送給cout輸出。

1.4.3  理解整型與浮點(diǎn)型除法

接下來的一行代碼中使用斜線(/)來做除法運(yùn)算。然而,輸出結(jié)果可能有點(diǎn)讓人出乎意料。根據(jù)C++的實(shí)現(xiàn)方式(以及該程序平臺(tái)),7除以3等于2。為什么?原因在于,整型(沒有小數(shù)部分的數(shù))的算術(shù)運(yùn)算結(jié)果總是整型。因?yàn)?和3都是整型,所以結(jié)果也必須是整型,其小數(shù)部分被去除。

如果要得到保留小數(shù)部分的結(jié)果,那么至少需要有一個(gè)數(shù)是浮點(diǎn)型(帶小數(shù)部分的數(shù))。接下來一行代碼中表達(dá)式7.0 / 3.0的結(jié)果便保留了小數(shù)部分。這次結(jié)果更精確,是2.33333。

陷阱

您也許注意到7.0/3.0(2.33333)的結(jié)果雖然包含了小數(shù)部分,但這個(gè)結(jié)果仍然是被截短過的(真正的結(jié)果在十進(jìn)制小數(shù)點(diǎn)后面有無窮多個(gè)3) 。需要了解的是,計(jì)算機(jī)一般只存儲(chǔ)浮點(diǎn)數(shù)的有限個(gè)數(shù)的高位數(shù)字。然而,C++提供了不同種類的浮點(diǎn)數(shù)以滿足最苛刻的要求,甚至可以滿足計(jì)算密集型的3D游戲的要求。

1.4.4  使用取模運(yùn)算符

接下來的一條語句使用的運(yùn)算符可能比較陌生——取模運(yùn)算符(%)。取模運(yùn)算符返回整型除法的余數(shù)。在本例中,7 % 3結(jié)果為7 / 3的余數(shù)1。

1.4.5  運(yùn)算符的優(yōu)先級(jí)

C++中的算術(shù)表達(dá)式和代數(shù)學(xué)中一樣從左到右依次求值。但是有些運(yùn)算符的優(yōu)先級(jí)比較高,無論處于什么位置都將首先求值。乘法、除法和取模運(yùn)算的優(yōu)先級(jí)相同,都高于加法和減法。

接下來的一行代碼演示了優(yōu)先級(jí)的作用。因?yàn)槌朔ǖ膬?yōu)先級(jí)高于加法,所以首先計(jì)算乘法的結(jié)果。因此,表達(dá)式7 + 3*5等于7 + 15,結(jié)果為22。

如果需要首先計(jì)算較低優(yōu)先級(jí)的運(yùn)算操作,可以使用括號(hào),它比任何算術(shù)運(yùn)算符的優(yōu)先級(jí)都高。所以在下一條語句中,表達(dá)式(7 + 3) * 5等于10 * 5,結(jié)果為50。

提示

C++運(yùn)算符一覽表及其優(yōu)先級(jí)詳見附錄B。


上一章目錄下一章

Copyright ? 讀書網(wǎng) www.autoforsalebyowners.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)