精華區beta Programming 關於我們 聯絡資訊
剛才有個人問我一個問題 int x=12; x=x++ + ++x; cout<<x; 答案是多少,我跟他說這個行為未定義 結果會隨著compiler的實作而改變 他說這是 研究所的考題...... 研究所...............囧rz||| 我想說...從左邊開始是多少 右邊開始應該是多少 應該是25 和 26 吧? 不過答案卻是27... 後來我寫了一個程式下去跑 才知道 因為右邊那個++x做完後並不會傳回複本 而是傳回自己本身 所以在遇到左邊x++時會被再加一次 這時就變成 13 14 了 http://myweb.fcu.edu.tw/~d9529769/add.cpp 這是程式 嗯= = 那不是重點....重點是,我很擔心將來某一天如果我遇到這種腦殘題目 該怎麼做答? 那個人說這是問答題 我該寫 "行為未定義! 回去重修C/C++吧! 笨蛋!" 還是... "VC6跑出來的結果是27" 還是...列舉所有可能的compiler做法 把數值可能的情況全部列舉出來呢? 寫27麻...其它compiler又不一定是27 不寫27...寫一堆廢話的話 說不定還被倒扣分數 XDDDD.... 老實說我有點懷疑一些人出來教書...到底是在幹麻的阿= =|| 還是出來誤人子弟的... 出這種考題的人= =.. 也許也會寫出這樣的程式 教授? 助教? 是不是該判他們去黑龍江勞改呢... 還是判他們替烤麵包機寫電晶片呢? -- VICTOR工作室 | PTT遊戲設計版隆重開幕! | 不管是新手老手,程式美工音樂企劃.... URL : http://www.kinmen.info/vic/ | 都歡迎來遊戲設計版參與討論 XD | 戰略高手> C/C++ | GameTopics> Visual Basic 6.0 | GameDesign -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.116.65.83
abcdefghi:正解:站起來離開考場,千萬別讀這間學校. 140.113.23.107 02/21 22:13
meltice:變數x只有一個 從右邊看回來 218.211.11.197 02/23 10:45
meltice:++x變13 x++還是13所以 assign給x後變26 218.211.11.197 02/23 10:45
meltice:整個expression結束後再執行x++這個動作 218.211.11.197 02/23 10:46
meltice:所以答案是27 218.211.11.197 02/23 10:47
meltice:int i=1; i = i++ - i++ + i++ - i++; 218.211.11.197 02/23 10:50
meltice:等於 i=i-i+i-i; ++++++++i; 218.211.11.197 02/23 10:52
meltice:所以答案等於4 218.211.11.197 02/23 10:53
meltice:重點在於i++這個動作是在整個expression 218.211.11.197 02/23 10:53
meltice:結束之後才執行的 218.211.11.197 02/23 10:54
meltice:所以先把i++的++拿掉之後再算就對了 218.211.11.197 02/23 10:55