С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Циклы for. Проблема объявления/инициализации - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Управление камерой через USB http://www.cyberforum.ru/cpp/thread11657.html
Существует ли библиотека для управления камерой через USB ? (камера Panasonic DVD-юшная)
C++ Чем отличается Visual C++ от Borland C++? мужики у меня тут вопрос я конечно полный нуб еще:eek: а чем отличается Visual C++: от Borland C++ ? вроде ето один и тотже язык программирования http://www.cyberforum.ru/cpp/thread11200.html
C++ Как работать с реестром?
Привет! Я должен написать программу, которая не разрешает вставлять дискеты, флэшки, диски в комп. Но подобными вещами пока не занимался. Решил начать с того, что прога будет выдавать сообщение, типа...
C++ Подскажите сайты с Open Source проектами, в которых можно поучаствовать
Люди дайте пожалуйста ссылки на сайты где есть открытые проекты на С++ в которых можно поучаствовать. Чо та гугл молчок).спс.
C++ 16-разрядная подсистема MS-DOS http://www.cyberforum.ru/cpp/thread10534.html
куда надо писать, не знаю, поэтому спрошу тут. ошибка вылазиет не в моей проге, а после того, как последняя скомпилировалась, причем в отдельном окошке: '16-разрядная подсистема MS-DOS ...
C++ Перевести визуализацию WinAmp в полноэкранный режим Как перевести визуализацию винампа в полноэкрнный режим? эмулирование alt+enter и даблклик почемуто не работают HWND h; h=FindWindow("Winamp v1.x", NULL); SendMessage(h,WM_COMMAND,40192,0);... подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
03.09.2008, 14:09  [ТС]
Цитата Сообщение от Sined Посмотреть сообщение
Почему сразу хочу, но не могу.
Ты пишешь по первому листингу дизасемблера, что две переменные являються вне цыкла.

А ты попробуй такой код:

Код
void main()
{
    for(int i=0;i<5;i++)
    {
    }
    printf("%d",i);               [B][COLOR=Red]//ошибка error C2065: 'i' : undeclared identifier
                    //так как инициалезация переменной происходит
                     //внутри блока for[/COLOR][/B]
}
О боже. Я молчу. Может, тебе выспаться? Читай внимательней выше. Я свое время, на тех, кто не читает, растрачивать не собираюсь.

CheshireCat, нет, я не путаю эти вещи. Единого стандарта С++ нет. Параллельно существуют несколько стандартов. Да короче, че я тут с тобой спорю... Даже, если бы и был, то практика уже все показала и подтвердила, что толку от них. Но его нет.
Есть, например: iso14882:2003/1998. Они существуют параллельно. Я молчу про различные их редакции.
Если ни один компилер на 100% не поддерживает ни один стандарт, то тем более, этот код становится менее безопасным.

Добавлено через 2 минуты 16 секунд
Sined, вот именно, что если нет стандарта единого, этор еще больше уменьшает безопасность приведенного мною кода. Короче, ты тут споришь, а сам ни одного аргумента не привел.
Хочешь настоящий стандарт увидеть? Иди и учи ada. Тогда с тобой поговорим. И ассемблер заодно...
Ты, по-моему, в бронепоезде сидишь...

g++ даже ошибку покажет умнее:
error: name lookup of `i' changed for new ISO `for' scoping
Эх, Sined, если ты на одной студии все гоняешь, то, навряд ли, можешь что-то новое мне открыть
Еще раз повторю, что откомпилированный:
Код
for(int i=1;i<5;i++)
{
      int i = 5;
}
говорит, что это и не внутренняя переменная.

Сейчас основные два стандарта поддерживаются. Никто не отменял ничего.

Так что, "написание по стандарту" в данном случае есть фигня. Так как, и та и эта запись идут по стандарту. Просто в одном случае я буду писать, если знаю, что никому не буду давать свой код, не буду его портировать. В противном случае (если я знаю, что придется портировать, разными компилерами компилить, на разных системах тестить), то мой мозг будет знать, что для данной ситуации, лучше объявить переменную вне цикла. Так я гарантированно задам для нее namespace.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.