2 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
這又是道爛題!? 此題的正確答案是:輸出結(jié)果未定義。
我還是從頭說(shuō)吧:
一開(kāi)始 x 的初值為 10, y 的初值為 10(還記得吧,x++ 的值是 x 自增前的值)
然后就是函數(shù)調(diào)用,其中參數(shù)有:
(x++, y)? 這是逗號(hào)表達(dá)式,逗號(hào)表達(dá)式的值是右側(cè)那項(xiàng)的值
y++? ?別忘了這個(gè)表達(dá)式有自增的副作用,這個(gè)副作用何時(shí)發(fā)生可是與序列點(diǎn)有關(guān)呦
關(guān)鍵的、也就是這個(gè)題目錯(cuò)誤的地方來(lái)啦: C 標(biāo)準(zhǔn)沒(méi)有規(guī)定調(diào)用函數(shù)時(shí)參數(shù)的求值順序(各個(gè)參數(shù)會(huì)以任意順序求值),而且每個(gè)參數(shù)求值后也不是序列點(diǎn)。
我想這樣一說(shuō)你也就明白了:? 我根本就不知道 (x++, y) 和 y++ 這兩個(gè)參數(shù)哪個(gè)先算。再有,兩個(gè)參數(shù)求值之間不是序列點(diǎn),那我也不知道 y 是何時(shí)自增了。 所以我根本就不知道 (x++, y) 中 y 的值該是多少。
順便說(shuō)下,能夠確定的是:
最后 x 的值會(huì)是 12
第二個(gè)打印出來(lái)的值是 10
- 2 回答
- 1 關(guān)注
- 3251 瀏覽
添加回答
舉報(bào)