объявив переменную типа int - PullRequest
0 голосов
/ 16 апреля 2011
for(int i=0; i < size; i++)

Я объявил переменную в своем коде, как указано выше, и получил ошибку во время компиляции: что-то вроде такого объявления устарело в соответствии со стандартами ISO.

Затем я объявил переменную вне цикла for следующим образом:

int i;
for(i=0; i < size; i++) 

....... и это сработало ????

Может кто-нибудь рассказать мне об этом объявлении, потому что, насколько я знаю, в C ++ мы можем объявить переменную не только сверху, как в c, но и где угодно ниже, пока нам это нужно.

Я использовал компилятор gcc.

Ответы [ 3 ]

2 голосов
/ 16 апреля 2011

Скорее всего, вы компилировали с помощью gcc вместо g ++ (или xl_C вместо xl_C ++ и т. Д.)*

1 голос
/ 16 апреля 2011

Я предполагаю, что вы используете i после окончания цикла.

Когда-то первый бит кода был эквивалентен второму, объявляя i в области действия вне цикла, поэтому такой код был возможен:

for (int i = 0; i < size; ++i) {
    // do something
}

if (i != size) {
    // do something else
}

В стандарте C ++ это недопустимо; i доступно только в теле цикла, и вам нужно объявить его вне цикла, чтобы получить к нему доступ.

1 голос
/ 16 апреля 2011

Первое объявление объявляет i только в области цикла for.Второй объявляет об этом сразу же снаружи.Оба совершенно действительны.Вы бы использовали второй случай, когда вы хотите использовать значение i после цикла, это, как правило, тот случай, когда у вас есть предложение break в цикле, и вы хотите выяснить, какую итерацию вы использовалипетли.

...