作者StubbornLin (Victor)
看板Programming
標題[問題] 如果哪天我也遇到這個爛題目,該怎麼答?
時間Wed Feb 21 22:08:38 2007
剛才有個人問我一個問題
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