作者heaviest (heaviest)
看板C_and_CPP
標題[問題] exp-- 與exp =exp-1 的差別
時間Tue Jan 31 19:59:48 2017
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1485863991.A.73A.html
1F:推 legendmtg: 搞懂exp--跟--exp的差異你就懂了 01/31 20:08
2F:推 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
3F:→ ntucorner: 同一樓 01/31 20:22
4F:→ james732: 你要考慮把那本書丟掉了 01/31 21:29
5F:推 longlongint: 如果沒有做取值 會是一樣的(? 01/31 22:12
6F:噓 Ommm5566: 不要這樣寫 是要出現幾次啦 01/31 23:13
7F:噓 er230059: 把那本書燒掉吧..... 01/31 23:21
8F:推 KALR: 這兩種方式的 Sequence point 不一樣 01/31 23:57
9F:推 LPH66: ....這裡我要支持一下書, 教初學者時這樣教是 OK 的 02/01 00:34
10F:→ LPH66: 是把它拿去放在 while 的條件裡這個進階用法才有差 02/01 00:34
11F:→ LPH66: 但講到這個時就得提前置後置的差別了 02/01 00:35
12F:→ LPH66: 反過來說, 如果書裡這邊真的有提前置後置 02/01 00:36
13F:→ LPH66: 那這樣講才是有問題 02/01 00:36
14F:推 johnny94: LPH66的看法+1 02/01 00:58
15F:→ KrauserII: 就別跟文法廚們一般見識了 02/01 15:03
16F:推 legendmtg: 嗯.... 你的理解有點不太對喔 02/02 02:00
17F:→ legendmtg: exp--也是先減完才會執行while的 02/02 02:01