2012-12-08 79 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; 
}