[問題] exp-- 與exp =exp-1 的差別

看板C_and_CPP (C/C++)作者 (heaviest)時間9年前 (2017/01/31 19:59), 9年前編輯推噓5(728)
留言17則, 11人參與, 最新討論串1/1
開發平台(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

01/31 20:08, , 1F
搞懂exp--跟--exp的差異你就懂了
01/31 20:08, 1F

01/31 20:10, , 2F
(exp--) 跟 ((exp = exp - 1) + 1) 等價
01/31 20:10, 2F
exp--會先把while執行完再減一,而exp = exp -1 在while會先減,減完是0就跳出來 故會少一個次方 這樣的理解,還有哪裡有錯嗎? 非常感謝各位前輩的指點 書上直接寫a++ 跟 a= a+1 是一樣的 這說法不完全對啊orz ※ 編輯: heaviest (106.1.27.112), 01/31/2017 20:26:11

01/31 20:22, , 3F
同一樓
01/31 20:22, 3F

01/31 21:29, , 4F
你要考慮把那本書丟掉了
01/31 21:29, 4F

01/31 22:12, , 5F
如果沒有做取值 會是一樣的(?
01/31 22:12, 5F

01/31 23:13, , 6F
不要這樣寫 是要出現幾次啦
01/31 23:13, 6F

01/31 23:21, , 7F
把那本書燒掉吧.....
01/31 23:21, 7F

01/31 23:57, , 8F
這兩種方式的 Sequence point 不一樣
01/31 23:57, 8F

02/01 00:34, , 9F
....這裡我要支持一下書, 教初學者時這樣教是 OK 的
02/01 00:34, 9F

02/01 00:34, , 10F
是把它拿去放在 while 的條件裡這個進階用法才有差
02/01 00:34, 10F

02/01 00:35, , 11F
但講到這個時就得提前置後置的差別了
02/01 00:35, 11F

02/01 00:36, , 12F
反過來說, 如果書裡這邊真的有提前置後置
02/01 00:36, 12F

02/01 00:36, , 13F
那這樣講才是有問題
02/01 00:36, 13F

02/01 00:58, , 14F
LPH66的看法+1
02/01 00:58, 14F

02/01 15:03, , 15F
就別跟文法廚們一般見識了
02/01 15:03, 15F

02/02 02:00, , 16F
嗯.... 你的理解有點不太對喔
02/02 02:00, 16F

02/02 02:01, , 17F
exp--也是先減完才會執行while的
02/02 02:01, 17F
文章代碼(AID): #1Oa7mtSw (C_and_CPP)
文章代碼(AID): #1Oa7mtSw (C_and_CPP)