作者oohay (五黑)
看板Programming
标题Re: TC++ 变数视野求教
时间Fri Feb 29 11:11:09 2008
我很不喜欢你回答的态度,跟你讲还拿翘.
讲第一点的意思是说,别人不是都懂的东西,请你不要当做一般沟通通则来跟人讲,
重点并不是 "大拇指原则" 我懂不懂,而是大家懂不懂.
讲第二点的意思是根据你描述你的程式与除错方式,
我看出你是在假设local变数会被视野范围之外的东西影响,
结果你在这里说 "你都没有这样说", 这并不代表你没有做此错误假设啊!
我确实把你文章从头到尾看完,否则怎麽回答你问题?
话说回来,讲第二点意思是要告诉你,程式语言本身有基本原则,
若你可以无故疑惑local变数不是个local变数的模样,就是你自己写程式的概念有问题.
第三点明明不是要吵架! 第三点是告诉你说,你除错的方式不对! 不合逻辑.
事实上,我认为你随意把一行local变数宣告改成这样global或那样global,从来没见过!
太荒谬了,难道你不会让每个函式都各自有一个local变数吗?
结果按你的回应,是啦,别人都没把你的文字看清楚!
那这样子你自己搞定问题就好啦!
你说你想要知道错误发生原因在哪里,那就好笑了,你只说你试着用global变数解决
程式怪怪的问题,但程式本身是怎麽怪,谁知道!
不要再叫我看前文,因为垃圾不值得看第二遍!
※ 引述《"marujoung" <[email protected]>, 看板: Programming》之铭言:
: From: [email protected] (五黑)
: >1. 别人不见得学过所谓 "大拇指原则"
: 所谓大拇指原则, 就是函式内容以一页为原则.
: >2. 为什麽你会猜测是func1把区域变数i当作全域变数使用? 凭什麽说违反视野?
: 大哥! 我从头到尾都没这样说喔! 烦再阅前文,
: 我只是移动了一下 int i 的位置就解决了,
: so 好像是在视野的使用上出了问题...
: 我好像找到解释的理由了, 烦见信尾.
: >3. 出错,错误讯息讲什麽,指向哪一行,看清楚了在做除错动作.
: 大哥! 小弟我是真的有难题要求助, 不是来吵架的, 干嘛讲话那麽冲!
: 小弟向来以除错技术佳自豪, 这回抓不出原因是学艺不精, 对视野了解不够.
: compiler 根本说没错, 是执行结果不是我想的.
: >或许你可以把全域变数i移到最前面,但也别删掉func1内的区域变数i.
: 但事实是我改成这麽做後问题就解决了耶?
: 仔细品味兄台这句话,
: 猜想兄台的想法是外在变数在进入 func1 前作用了,
: 但一进入 func1 便被 auto 变数遮盖,
: 离开 func1 进入 func2 时 i 又变回外在变数, 是吧?
: 噫! 好像有道理喔! 可是我不敢再试,
: 因目标(资料库)太大无法备份, 再出状况会很麻烦.
: 而我的想法(拿掉 auto)是:
: func1 及 func2 统一共用外在变数 int i,
: 由名称叫 i 而非有意义的单字便知它只是个暂用的变数, 例如回圈.
: 当 i 离开 func1 时它的值是什麽已不重要,
: 因为进入 func2 时值会重设,
: 同理当 i 离开 func2 时它的值是什麽不重要,
: 因为再进入 func1 时值会重设.
: 结论: 也许 bug 真的被您抓到了, 但很冒险, 我不敢试;
: 我的想法很简单, 但较安全, 且通过了事实证明.
: 也许您会问: 既然坚持自己的想法, 干嘛问我们!
: 程式的 bug 已用我的方式解决了, 小弟我只是想知道当初错误的原因.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.111.5