作者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/cn.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