2012-12-08 80 views
0

它說,在第13行:「我」改變名稱查找爲ISO「爲」作用域循環中沒有定義變量?

#include <iostream> 
using namespace std; 

int main() 
{ 
    int Fib[40]; 
    Fib[0] = 1; 
    Fib[1] = 1; 
    cout << Fib[0] << Fib[1] << endl; 

    for (int i=2; i<40; i++) 
    Fib[i]=Fib[i-1]+Fib[i-2]; 
     cout << Fib[i] << endl; 
} 
+2

For循環只持續一個行,如果沒有括號。 – chris

+1

你知道,因爲你沒有使用大括號,只有第一條語句在循環內部是嗎? 'cout << Fib [i] << endl;'行在for循環之外。還要修復您的縮進。 – Borgleader

+0

哦,我明白了,謝謝你 – Foxic

回答

2

你忘了範圍要在循環中執行的指令:

for (int i=2; i<40; i++) { 
    Fib[i]=Fib[i-1]+Fib[i-2]; 
    cout << Fib[i] << endl; 
} 

循環只會執行單個指令或單個指令範圍。在你的代碼中,只有第一行是循環的一部分。第二個不是,因此i超出了範圍。無論你是否縮進這些行,在C++中都沒有關係。編譯器不關心縮進;它僅用於幫助程序員,而不是編譯器。

1

最後一行有[i]它不在循環內 cout < < Fib [i] < < endl; 在我的範圍只能在for循環,因爲我是根據新的ISO標準循環中聲明,以便正確的路線將是

for (int i=2; i<40; i++) { 
    Fib[i]=Fib[i-1]+Fib[i-2]; 
    cout << Fib[i] << endl; 
}