Re: TC++ 變數視野求教
我很不喜歡你回答的態度,跟你講還拿翹.
講第一點的意思是說,別人不是都懂的東西,請你不要當做一般溝通通則來跟人講,
重點並不是 "大拇指原則" 我懂不懂,而是大家懂不懂.
講第二點的意思是根據你描述你的程式與除錯方式,
我看出你是在假設local變數會被視野範圍之外的東西影響,
結果你在這裏說 "你都沒有這樣說", 這並不代表你沒有做此錯誤假設啊!
我確實把你文章從頭到尾看完,否則怎麼回答你問題?
話說回來,講第二點意思是要告訴你,程式語言本身有基本原則,
若你可以無故疑惑local變數不是個local變數的模樣,就是你自己寫程式的概念有問題.
第三點明明不是要吵架! 第三點是告訴你說,你除錯的方式不對! 不合邏輯.
事實上,我認為你隨意把一行local變數宣告改成這樣global或那樣global,從來沒見過!
太荒謬了,難道你不會讓每個函式都各自有一個local變數嗎?
結果按你的回應,是啦,別人都沒把你的文字看清楚!
那這樣子你自己搞定問題就好啦!
你說你想要知道錯誤發生原因在哪裏,那就好笑了,你只說你試著用global變數解決
程式怪怪的問題,但程式本身是怎麼怪,誰知道!
不要再叫我看前文,因為垃圾不值得看第二遍!
※ 引述《"marujoung" <maru8888@bbs.emerald.net.tw>, 看板: Programming》之銘言:
: From: oohay.bbs@ptt.cc (五黑)
: >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
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章