看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) dev c++ 5.11 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 這是從網路上抓來的指數函數 在測試時,我把while裡的exp--改成exp=exp-1 結果程式的結果就錯誤了 更改為exp=exp-1,之後的次方運算都會少一個次方 個人推測是當變成0的那個次方while偵測到為0,所以自動停止了,而不是if停下 但為何exp--,就不會有同樣問題,令我很困惑 可能我的推測是錯的 請版上各位前輩指正 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/0d3p0WML 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.27.112 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1485863991.A.73A.html
legendmtg: 搞懂exp--跟--exp的差異你就懂了 01/31 20:08
Hazukashiine: (exp--) 跟 ((exp = exp - 1) + 1) 等價 01/31 20:10
exp--會先把while執行完再減一,而exp = exp -1 在while會先減,減完是0就跳出來 故會少一個次方 這樣的理解,還有哪裡有錯嗎? 非常感謝各位前輩的指點 書上直接寫a++ 跟 a= a+1 是一樣的 這說法不完全對啊orz ※ 編輯: heaviest (106.1.27.112), 01/31/2017 20:26:11
ntucorner: 同一樓 01/31 20:22
james732: 你要考慮把那本書丟掉了 01/31 21:29
longlongint: 如果沒有做取值 會是一樣的(? 01/31 22:12
Ommm5566: 不要這樣寫 是要出現幾次啦 01/31 23:13
er230059: 把那本書燒掉吧..... 01/31 23:21
KALR: 這兩種方式的 Sequence point 不一樣 01/31 23:57
LPH66: ....這裡我要支持一下書, 教初學者時這樣教是 OK 的 02/01 00:34
LPH66: 是把它拿去放在 while 的條件裡這個進階用法才有差 02/01 00:34
LPH66: 但講到這個時就得提前置後置的差別了 02/01 00:35
LPH66: 反過來說, 如果書裡這邊真的有提前置後置 02/01 00:36
LPH66: 那這樣講才是有問題 02/01 00:36
johnny94: LPH66的看法+1 02/01 00:58
KrauserII: 就別跟文法廚們一般見識了 02/01 15:03
legendmtg: 嗯.... 你的理解有點不太對喔 02/02 02:00
legendmtg: exp--也是先減完才會執行while的 02/02 02:01