0

13行目で言っています:「i」の名前ルックアップが「スコープ」の「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;
}
4

2 に答える 2

2

ループで実行する命令のスコープを忘れました。

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

ループは、単一の命令または単一のスコープの命令のみを実行します。あなたのコードでは、最初の行だけがループの一部でした。2つ目はそうではなかったためi、範囲外でした。C ++では、行をインデントするかどうかはまったく関係ありません。コンパイラはインデントを気にしません。コンパイラーではなく、プログラマーを支援するためにのみ使用されます。

于 2012-12-08T04:19:31.953 に答える
1

最後の行には[i]があり、ループ内にはありませんcout << Fib [i] << endl; iは新しいISO規格に従ってループ内で宣言されているため、iのスコープはforループ内にのみ存在するため、正しい行は次のようになります。

for (int i=2; i<40; i++) {
    Fib[i]=Fib[i-1]+Fib[i-2];
    cout << Fib[i] << endl;
} 
于 2012-12-08T04:23:28.393 に答える