第 4 講:if 條件語(yǔ)句
關(guān)鍵字的用法
接下來(lái),我將為你講解的是一種新的執(zhí)行語(yǔ)法模式:條件判斷。
在前文的介紹里,我們可以使用運(yùn)算符和類(lèi)型聲明的表達(dá)式,來(lái)獲取一些數(shù)據(jù)的數(shù)值,并輸出。但整個(gè)程序的寫(xiě)法格式是這樣的:
if
條件判斷。if
可以根據(jù)注釋內(nèi)容看到,只要條件滿足要求的,將會(huì)走第一個(gè)大括號(hào)的內(nèi)容;如果不滿足要求,將會(huì)走第二個(gè)大括號(hào)的內(nèi)容。例如
可以從這里看到,顯然 a + b
結(jié)果是大于 4 的,所以滿足條件,故 c
的結(jié)果應(yīng)為 a + b
,輸出的結(jié)果就是 5。當(dāng)然,這里就需要你學(xué)習(xí)一些語(yǔ)法約定和書(shū)寫(xiě)格式規(guī)范。當(dāng) if
和 else
塊里只有一句話的時(shí)候,大括號(hào)是可以省略的,但最好使用縮進(jìn)格式書(shū)寫(xiě),分清楚層次,這樣可以輕松辨別代碼的邏輯和控制的部分,即:
三目運(yùn)算符:條件運(yùn)算
我們可以使用三目運(yùn)算符 ?:
來(lái)判別一個(gè)結(jié)果。類(lèi)似上文的邏輯,在 ?
前面寫(xiě)條件,在 ?
和 :
之間寫(xiě)條件成立的時(shí)候的結(jié)果,而 :
后寫(xiě)條件為假的時(shí)候的結(jié)果。如:
這樣就把之前的 if-else
判斷模式簡(jiǎn)寫(xiě)為這樣。它們是等價(jià)的。
嵌套 if
之所以之前叫大家將 if
內(nèi)部的執(zhí)行內(nèi)容進(jìn)行縮進(jìn),是因?yàn)?if
的執(zhí)行邏輯是可以嵌套的。
類(lèi)似于上述邏輯,我們可以先看條件判斷。由于 a + b
的結(jié)果是 5 而不是 3,所以它只能走 else
這一部分的執(zhí)行內(nèi)容。于是得到 c
為 0,所以輸出結(jié)果為 0。
串聯(lián) if
有時(shí)候,當(dāng)分支不止一個(gè)的時(shí)候,我們可以使用把 if
的聲明串聯(lián)的模式來(lái)執(zhí)行一些操作。
a == 2
條件的 else
部分就只有一句話,我們可以省略這一個(gè)大括號(hào);而且 c == 3
條件里的 else
不過(guò),還是很丑陋。不過(guò)我們發(fā)現(xiàn),既然 else
和 if
語(yǔ)句還有 else
這樣不就很好看了嗎。這個(gè)寫(xiě)法就是 if
串聯(lián)的寫(xiě)法。
嵌套 if
時(shí)的三目運(yùn)算
前文用到的這個(gè)示例
可以被簡(jiǎn)寫(xiě)為
(a - b == 3 ? a * b : a / b)
數(shù)值條件
最后要說(shuō)明一下的是,任意一個(gè)整數(shù)數(shù)值都可以作為條件使用,寫(xiě)在 if
語(yǔ)句的小括號(hào)里。在前文里,我們說(shuō)到,一個(gè)整數(shù)數(shù)值,只要它不是 0,我們就認(rèn)為這個(gè)數(shù)值表示的條件是“正確的”的意思,而是 0 則表示這個(gè)條件是“不成立的”、“錯(cuò)誤的”的意思。所以,如果我們想要把一個(gè)數(shù)值作為真假兩種情況的判斷的話,我們可以這么寫(xiě):
這樣,你就能得到 17 is a prime
的輸出信息。當(dāng)然,你甚至也可以為 isPrime
變量的條件處添加前綴取反符號(hào) !
來(lái)表示邏輯取反。
不過(guò),從這個(gè)角度來(lái)看,isPrime
單獨(dú)作為條件,可以等價(jià)用判斷語(yǔ)句表示為 isPrime != 0
,而 !isPrime
則可以等價(jià)表示為 isPrime == 0
。所以推廣到任意情況下:
digit == 0
簡(jiǎn)寫(xiě)作!digit
;digit != 0
簡(jiǎn)寫(xiě)作digit
。
當(dāng)然,這兩種說(shuō)法僅用于 if
的條件斷言(小括號(hào))處。