Форум программистов, компьютерный форум CyberForum.ru

Циклы 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
Как использовать pascal модуль в TubroC++? C++
Есть модуль, написанный на TurboPascal. Как использовать в приложении на си? Есть возможность сделать из него какую-нибудь библиоткеку, понятную для С? Среда - чистый DOS, не эмуляция.
C++ Как работать с реестром?
Привет! Я должен написать программу, которая не разрешает вставлять дискеты, флэшки, диски в комп. Но подобными вещами пока не занимался. Решил начать с того, что прога будет выдавать сообщение, типа "вы вставили диск..." ну или как-то так... только пока не начал. Если кто-то когда-то писал такое, может что-то посоветуете. Или может подскажете, где хорошо описана работа с реестром, я попробую...
C++ Подскажите сайты с Open Source проектами, в которых можно поучаствовать http://www.cyberforum.ru/cpp/thread10540.html
Люди дайте пожалуйста ссылки на сайты где есть открытые проекты на С++ в которых можно поучаствовать. Чо та гугл молчок).спс.
C++ 16-разрядная подсистема MS-DOS куда надо писать, не знаю, поэтому спрошу тут. ошибка вылазиет не в моей проге, а после того, как последняя скомпилировалась, причем в отдельном окошке: '16-разрядная подсистема MS-DOS Borand c++ for Dos процессор NTVDM обнаружил недопустимую инструкцию. CS:0000 IP:0077 OP:f0 37 05 10 02 Для завершения работы приложения нажмите кнопку "Закрыть".' подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.09.2008, 14:09  [ТС]     Циклы for. Проблема объявления/инициализации
Цитата Сообщение от 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.
 
Текущее время: 13:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru