- 相關(guān)推薦
這段代碼打印出56嗎
使用我的編譯器,下面的代碼int i=7; printf(“%d\n”, i++ *i++); 返回49?不管按什么順序計(jì)算, 難道不該打印出56嗎?
盡管后綴自加和后綴自減操作符++ 和– 在輸出其舊值之后才會執(zhí)行運(yùn)算,但這里的“之后”常常被誤解。沒有任何保證確保自增或自減會在輸出變量原值之后和對表達(dá)式的其它部分進(jìn)行計(jì)算之前立即進(jìn)行。
也不能保證變量的更新會在表達(dá)式“完成” (按照ANSI C 的術(shù)語, 在下一個“序列點(diǎn)” 之前, 參見問題3.7) 之前的某個時刻進(jìn)行。
本例中, 編譯器選擇使用變量的舊值相乘以后再對二者進(jìn)行自增運(yùn)算。
包含多個不確定的副作用的代碼的行為總是被認(rèn)為未定義。(簡單而言, “多個不確定副作用” 是指在同一個表達(dá)式中使用導(dǎo)致同一對象修改兩次或修改以后又被引用的自增, 自減和賦值操作符的任何組合。
這是一個粗略的定義; 甚至都不要試圖探究這些東西在你的編譯器中是如何實(shí)現(xiàn)的(這與許多C 教科書上的弱智練習(xí)正好相反);
正如K&R 明智地指出, “如果你不知道它們在不同的機(jī)器上如何實(shí)現(xiàn), 這樣的無知可能恰恰會有助于保護(hù)你。”
【這段代碼打印出56嗎】相關(guān)文章:
這樣“打”法能不笑嗎?爆笑06-05
放棄這段感情的說說04-21
過濾HTML代碼08-29
撐過這段最難熬的日子說說12-13
這段婚姻我真的累了的說說11-24
電腦藍(lán)屏代碼大全08-14
對這段感情我已徹底失望的句子10-21
無法釋懷這段余情的感人句子摘錄10-19
參考文獻(xiàn)代碼大全03-24