72. 以下程序的運(yùn)行結(jié)果是( )。void main( ){ int n=5;if(n++>=6)printf("%d\n",n);elseprintf("%d\n",++n);}A. 4B. 5C. 6D. 7
2 回答
已采納

Eric_溫水之蛙
TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超3個(gè)贊
D
if?(n++?>=6)???? //此時(shí)n++是在執(zhí)行這句判斷語(yǔ)句后再做自增操作,此時(shí)n=5,所以判斷語(yǔ)句進(jìn)入else. //進(jìn)入else語(yǔ)句后,n自增,n=6 printf("%d\n",++n);? //此時(shí)++n是先執(zhí)行自增操作后進(jìn)行print,此時(shí)n=6,進(jìn)行自增操作后,n=7. //然后執(zhí)行print操作,打印出7

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
我假定你已經(jīng)看過(guò)了我對(duì)“表達(dá)式有值”的講解。那么在理解了這點(diǎn)之后,我們來(lái)看下這個(gè)代碼的執(zhí)行。
n 的初值為 5
在 if 語(yǔ)句的條件判斷部分里,判斷的是“n++ 表達(dá)式”和 6 的關(guān)系。還記得吧,“n++ 表達(dá)式”的值就是 n 自增前的值,也就是 5。那么 5 不大于等于 6,所以條件為否,執(zhí)行流程進(jìn)入 else 中。
注意,if 的條件判斷結(jié)束時(shí)也是序列點(diǎn),所以能夠確定在進(jìn)入分支時(shí),n 肯定自增為 6 了。
else 中只有一個(gè) printf 語(yǔ)句,再次注意,printf 打印的是“++n 表達(dá)式”的值。 前置自增表達(dá)式的值就是操作數(shù)自增之后的值。 那么“++n 表達(dá)式”的值就是 7。
- 2 回答
- 0 關(guān)注
- 1144 瀏覽
添加回答
舉報(bào)
0/150
提交
取消