程式設計基礎(虛擬碼追蹤)
下列程式的 and 在左側的式子為 false 時不評估右側的式子(短路求值)。cnt 是全域變數。執行後 cnt 的值為下列何者?
整數型: cnt ← 0
○邏輯型: even(整數型: k)
cnt ← cnt + 1
return k mod 2 = 0
for (i 從 1 到 5 每次加 1)
if (i > 3 and even(i))
輸出 i
endif
endfor
- A1
- B2
- C5
查看答案與解析
正確答案:B. 2
i = 1〜3 時左側的 i > 3 為 false,因此不會呼叫右側的 even(i)。i = 4 與 i = 5 時 i > 3 為 true,因此會呼叫 even(i),cnt 變為2。輸出的只有整個條件為 true 的 i = 4。若是兩側一定都評估的方式,even 會被呼叫5次,cnt = 5。
- A. 這是整個條件為 true 而輸出的次數(i = 4 的1次)。
- B. 正確。只有 i = 4、5 時才呼叫 even。
- C. 這是不做短路求值、每次都呼叫 even 時的值。