Переменная не определена в цикле?

91
5

Он говорит в строке 13: поиск имени 'i' изменен для ISO 'for' scoping

#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;
}

спросил(а) 2012-12-08T07:17:00+04:00 7 лет, 5 месяцев назад
1
Решение
67

Вы забыли охватить инструкции, которые вы хотите выполнить в цикле:

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

Петли будут выполнять только одну команду или одну команду. В вашем коде только часть строки была частью цикла. Второе не было, и поэтому i вышел из сферы действия. Независимо от того, находитесь ли вы в строках или нет, в C++ не имеет значения. Компилятор не заботится о отступе; он используется только для помощи программисту, а не компилятору.

ответил(а) 2012-12-08T07:19:00+04:00 7 лет, 5 месяцев назад
54

Последняя строка имеет [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;
}

ответил(а) 2012-12-08T07:23:00+04:00 7 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема