TC++ 變數視野求教
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)
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章