基本運(yùn)算符
加減乘除 +、-、*、/ 運(yùn)算符遵循數(shù)學(xué)運(yùn)算規(guī)則及優(yōu)先級(jí)順序,這些運(yùn)算符需要兩個(gè)操作數(shù)。
可以使用多個(gè)運(yùn)算符構(gòu)建復(fù)雜的表達(dá)式,如:
運(yùn)算符 +、- 也可以作為符號(hào)運(yùn)算符:
負(fù)號(hào)可以用于指示或改變一個(gè)值的代數(shù)符號(hào)。
正號(hào)不改變它的操作數(shù)的值或負(fù)號(hào),但可以用來(lái)強(qiáng)調(diào)某些數(shù)值的方向性,如坐標(biāo)正負(fù)。
除法運(yùn)算符 / 代表兩數(shù)相除,整型與浮點(diǎn)型除法運(yùn)算有很大的不同。
浮點(diǎn)類型的除法運(yùn)算得出一個(gè)浮點(diǎn)數(shù)結(jié)果。
整數(shù)除法運(yùn)算則產(chǎn)生一個(gè)整數(shù)結(jié)果,不會(huì)有小數(shù)部分。
這就是說(shuō),兩個(gè)int類型的數(shù)據(jù)做除法時(shí),結(jié)果是其商。當(dāng)出現(xiàn)不能被整除的情況時(shí),并不會(huì)得到小數(shù)部分,1/2的結(jié)果是0而非0.5,3/2會(huì)得到1,這個(gè)過(guò)程被稱為截尾。當(dāng)需要保留小數(shù)部分時(shí),就需要兩個(gè)浮點(diǎn)類型(如:double)的數(shù)值進(jìn)行運(yùn)算。
除法運(yùn)算的結(jié)果正負(fù)取舍和算數(shù)一樣,符號(hào)相同為正,相異為負(fù)。可以看到,同一運(yùn)算符在不同語(yǔ)義下有不同的含義,如 '-',可以表達(dá)減法的概念,也可以表述負(fù)號(hào)的含義。
在前者情況下,它需要兩個(gè)操作數(shù),如:a-b,我們將它歸屬于雙目運(yùn)算符;
在后者語(yǔ)義下,它僅需一個(gè)操作數(shù),我們稱之為單目運(yùn)算符。
取模運(yùn)算
取模運(yùn)算符 %,僅用于整數(shù)運(yùn)算,結(jié)果是兩個(gè)數(shù)相除的余數(shù),也可稱為求余運(yùn)算符,如:
2 % 3 讀作“對(duì)2除以3取?!保?。
6 % 3 結(jié)果為0。
?當(dāng)操作數(shù)中有負(fù)數(shù)時(shí),取模結(jié)果的符號(hào)的正負(fù)取舍和被除數(shù)符號(hào)相同。即:
如果第一個(gè)操作數(shù)為負(fù)數(shù),那么得到的模也為負(fù)數(shù)。
如果第一個(gè)操作數(shù)為正數(shù),那么得到的模也為正數(shù)。
取模是一個(gè)非常有用的運(yùn)算,像我們?cè)诰W(wǎng)頁(yè)上看到的一些表格文件,奇偶行以兩種不同的背景色交替填充,這可以使用取模運(yùn)算來(lái)控制,方法是使用當(dāng)前行號(hào)與2取模,根據(jù)結(jié)果進(jìn)行顏色選擇并填充。

代碼展示了除法與取模運(yùn)算的符號(hào)方向。注意取模運(yùn)算的輸出,在printf()的格式化字符串中,兩個(gè)連續(xù)的%號(hào)使得程序轉(zhuǎn)義輸出了一個(gè)%號(hào)。*這是因?yàn)?號(hào)自身是格式控制符的一部分,因此需要連續(xù)輸入兩個(gè)%號(hào)以表示轉(zhuǎn)義輸出自身。最后,在做除法與取模運(yùn)算時(shí),始終提醒自己:0不能為除數(shù)!在程序當(dāng)中也是如此。
括號(hào)運(yùn)算符
一個(gè)運(yùn)算符可能有多個(gè)意義,像圓括號(hào)()運(yùn)算符, 在printf()函數(shù)中它被稱為調(diào)用操作符;而將它應(yīng)用到表達(dá)式中,使得表達(dá)式的求值順序得以改變,即改變了運(yùn)算符的優(yōu)先級(jí)。
逗號(hào)表達(dá)式
將多個(gè)表達(dá)式用逗號(hào)連接起來(lái),形成逗號(hào)表達(dá)式,語(yǔ)法如下:
逗號(hào)運(yùn)算符將兩個(gè)或多個(gè)表達(dá)式分隔開來(lái),這些表達(dá)式自左向右逐個(gè)求值,整個(gè)逗號(hào)表達(dá)式的值就是最后那個(gè)表達(dá)式的值。如:
優(yōu)先級(jí)
我們已經(jīng)學(xué)習(xí)了 =、+、-、*、/、%、()、, 運(yùn)算符,從算術(shù)運(yùn)算符的角度講,當(dāng)它們應(yīng)用到表達(dá)式中時(shí),求值順序依賴于優(yōu)先級(jí),這里給出由高到低的排序。
()
*、/、%
+、-
=
,
另一個(gè)容易被忽略的是結(jié)合性:
()、+、-、*、/ 都是從左向右結(jié)合,如: a+b、(c/d-2)。
= 是從右向左結(jié)合,a=3; 表示將右側(cè)的字面量賦值給左側(cè)的變量。
+、- 作為符號(hào)運(yùn)算符時(shí),結(jié)合性是從右向左,如: +5、-5,表示將字面量取正或取負(fù)。
習(xí)題
編寫一組運(yùn)用加減乘除運(yùn)算的程序。
在程序中加入除0的代碼,運(yùn)行程序看看是什么結(jié)果。
在程序中編寫求變量a的平方與立方的程序,注意選擇合適的數(shù)據(jù)類型。
在程序中編寫幾條空語(yǔ)句,看看它對(duì)程序的影響。
編寫復(fù)雜語(yǔ)句,看括號(hào)運(yùn)算符對(duì)表達(dá)式求值的影響。