Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: oleg_alexeev   (01.03.2007 в 15:10)
По-моему, дело тут в следующем:

Изначально при создании С++ (автор ведь спрашивает про С++ ?) объявление переменной
в операторе for было эквивалентно определению этой переменной непосредственно перед
for, т.е.


for (int i=0; i<10; i++)
{
}

был эквивалентен

int i = 0;
for (; i<10; i++)
{
}


поэтому пример автора эквивалентен следующему:


int i = 0;
for (; i<10; i++)
{
  int j = 0;
  for (; j<10; j++)
  {
  }
}
i = 0;  // работает
j = 0;  // не работает (вышли из блока, где j была объявлена)


Сейчас стандарт С++ изменили, так что i и j не будут существовать вне своих циклов.
Скомпилировав приведенный код компилятором GCC мы увидим, что это так.
Но компилятор от Microsoft умничает, он ругается только тогда, когда имеются объявления
переменных с такими же именами вне циклов. Когда же их нет, он ведет себя согласно
старому стандарту, обеспечивая большую совместимость со старым кодом.


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: