[問題] printf 傳相同變數運算的問題???

看板C_and_CPP (C/C++)作者 (迪歐麥斯威爾)時間18年前 (2006/07/23 23:22), 編輯推噓14(14012)
留言26則, 9人參與, 最新討論串1/2 (看更多)
這個是我今天才知道的,一般人寫程式不會這麼寫吧! 但是研究所都考這種特別不同的......,題目如下 ============================== 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

07/23 23:34, , 1F
想先請問老師是哪一位 :p
07/23 23:34, 1F

07/23 23:33, , 2F
置底文第九條 這個應該是compiler dependent
07/23 23:33, 2F

07/23 23:47, , 3F
我是去補習看到的。
07/23 23:47, 3F

07/23 23:47, , 4F
老師是......不能說。
07/23 23:47, 4F

07/23 23:48, , 5F
這個應該不是置底文第九條的,因為這個可以算出來
07/23 23:48, 5F

07/23 23:48, , 6F
有正確答案,跟 Compiler 沒有關係。
07/23 23:48, 6F

07/24 00:11, , 7F
只確定從後面開始丟(push)但不一定從後面開始運算呀..
07/24 00:11, 7F

07/24 00:29, , 8F
c99標準6.5.2.2 Function calls 第10點
07/24 00:29, 8F

07/24 00:29, , 9F
c++03標準 5.2.2 Function call 第8點
07/24 00:29, 9F

07/24 00:30, , 10F
都說在function call時, 運算的順序沒有明定..
07/24 00:30, 10F

07/24 00:45, , 11F
這題目不必看,原因很簡單,你必須指定限制條件,否則無解
07/24 00:45, 11F

07/24 02:38, , 12F
這種是爛題目了 十誡有解說~
07/24 02:38, 12F

07/24 02:40, , 13F
我覺得會不會和參數推入堆疊的順序有關 有Pascal和其他
07/24 02:40, 13F

07/24 02:41, , 14F
各種
07/24 02:41, 14F

07/24 02:42, , 15F
但那好像是OS相關而和語言無關@@??
07/24 02:42, 15F

07/24 10:55, , 16F
看一下置底第九條的 C++ 錯誤範例
07/24 10:55, 16F

07/24 10:56, , 17F
cout<<i 實際上可是 operator<<(cout,i) 喔
07/24 10:56, 17F

07/24 10:56, , 18F
再想想這裡情況是否和第九條真的無關
07/24 10:56, 18F

07/24 10:58, , 19F
function call 的參數運算順序,原先是沒有硬性規定的
07/24 10:58, 19F

07/24 10:59, , 20F
你說這個可算出來,是因為那位老師已經限定從後面算回來..
07/24 10:59, 20F

07/24 13:07, , 21F
vc.net也是從後面算回來,只是++i或--i都是回傳最後的i
07/24 13:07, 21F

07/24 21:45, , 22F
研究所考這種題目的,建議不要去念,浪費兩年時間,學一些
07/24 21:45, 22F

07/24 21:47, , 23F
錯誤觀念,還不如早點出社會歷練....
07/24 21:47, 23F

07/24 21:48, , 24F
多花點時間看OS,計組,資結,離散,線代這些教科書比較實際
07/24 21:48, 24F

07/25 01:00, , 25F
嗯!樓上的中肯,跟我想的一樣,你說的這些科目都是
07/25 01:00, 25F

07/25 01:00, , 26F
台大研究所要考的,正在準備中。
07/25 01:00, 26F
文章代碼(AID): #14mvGm5d (C_and_CPP)
文章代碼(AID): #14mvGm5d (C_and_CPP)