TC++ 變數視野求教

看板Programming作者時間18年前 (2008/01/09 16:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/12 (看更多)
MSGID: 0:0/0 382982A1 -KEY: FF77111D void main(void) { if(func1()) func2(); } int func1(void) { int i; : : return i; } int i; void func2(void) { : } 以上是我將程式簡化後的結構. 會將 int i 放在 func1 及 func2 間是因 int i 本來在 func2 內(auto) 而 func2 太大不符合大拇指原則, 所以我將 func2 切割成數個函式; 但 i 是共用的, 所以我將之放在 func2 前宣告. 怪的是這樣跑程式會出錯, 若我將 func1 內的 int i 拿掉, 將 int i 移到 func1 前就正確了. 不解的是 func1 內的 i 不是 auto 變數嗎? 理應不會左右後面的外在變數 i 才對, 且到了 func2 時 i 的值會重設, 而 func1 的 i 沒有進出. 但事實顯示似乎兩個 i 會互相干擾..... 以前學 C 時急沖沖地想寫程式, 對變數視野這部份沒下過功夫, 現在嚐到惡果了(無法解釋這現象) 拜託各位大大幫我解惑, 程式不能這樣寫嗎? --- 本站可傳檔、聊天、寫信喔 ! * Origin: 翡翠王國資訊站(BBS) [站址: 203.204.191.217] (0:0/0)
文章代碼(AID): #17X8Q200 (Programming)
文章代碼(AID): #17X8Q200 (Programming)