看板 C_and_CPP 關於我們 聯絡資訊
這個是我今天才知道的,一般人寫程式不會這麼寫吧! 但是研究所都考這種特別不同的......,題目如下 ============================== int i = 0; printf( "%d %d %d %d", ++i, ++i, ++i, i-- ); ============================== 老師說要從後面算回來,所以最後一個 i-- 先算 再來算倒數第二個 ++i,依此類推,所以答案是 2 1 0 0 想請問一下為什麼要從最後算回來?不是要印出字串的時候讀到 %d 會往後面找第一個變數來印,再來是第二個…… 因為這跟我的直覺想法不一樣,所以想要問一下原因 不然太久了會忘記,謝謝。 -- ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁╴╴╴╴▃▃ █████████████████████████o ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▅▅ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.81.229.204
ledia:想先請問老師是哪一位 :p 07/23 23:34
ckclark:置底文第九條 這個應該是compiler dependent 07/23 23:33
dbzgtgwduo:我是去補習看到的。 07/23 23:47
dbzgtgwduo:老師是......不能說。 07/23 23:47
dbzgtgwduo:這個應該不是置底文第九條的,因為這個可以算出來 07/23 23:48
dbzgtgwduo:有正確答案,跟 Compiler 沒有關係。 07/23 23:48
cole945:只確定從後面開始丟(push)但不一定從後面開始運算呀.. 07/24 00:11
cole945:c99標準6.5.2.2 Function calls 第10點 07/24 00:29
cole945:c++03標準 5.2.2 Function call 第8點 07/24 00:29
cole945:都說在function call時, 運算的順序沒有明定.. 07/24 00:30
PRAM:這題目不必看,原因很簡單,你必須指定限制條件,否則無解 07/24 00:45
drkkimo:這種是爛題目了 十誡有解說~ 07/24 02:38
drkkimo:我覺得會不會和參數推入堆疊的順序有關 有Pascal和其他 07/24 02:40
drkkimo:各種 07/24 02:41
drkkimo:但那好像是OS相關而和語言無關@@?? 07/24 02:42
UNARYvvv:看一下置底第九條的 C++ 錯誤範例 07/24 10:55
UNARYvvv:cout<<i 實際上可是 operator<<(cout,i) 喔 07/24 10:56
UNARYvvv:再想想這裡情況是否和第九條真的無關 07/24 10:56
UNARYvvv:function call 的參數運算順序,原先是沒有硬性規定的 07/24 10:58
UNARYvvv:你說這個可算出來,是因為那位老師已經限定從後面算回來.. 07/24 10:59
rephansu:vc.net也是從後面算回來,只是++i或--i都是回傳最後的i 07/24 13:07
abcdefghi:研究所考這種題目的,建議不要去念,浪費兩年時間,學一些 07/24 21:45
abcdefghi:錯誤觀念,還不如早點出社會歷練.... 07/24 21:47
abcdefghi:多花點時間看OS,計組,資結,離散,線代這些教科書比較實際 07/24 21:48
dbzgtgwduo:嗯!樓上的中肯,跟我想的一樣,你說的這些科目都是 07/25 01:00
dbzgtgwduo:台大研究所要考的,正在準備中。 07/25 01:00