Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
(Модератор:
Вад
) > Тема:
Bug?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Bug? (Прочитано 7163 раз)
0 Пользователей и 1 Гость смотрят эту тему.
acc15
Гость
Bug?
«
:
01-05-2006 05:46 »
замечено одно досадное недоразумение.
если использовать цикл for совместно с if то при первом же входе в цикл происходит проверка (if) и мгновенный вылет из цикла независимо ни от чего...
for (i=0;i<10;i++) if (i) i++; // к примеру
однако если использовать конструкцию совместно с else то всё работает без проблемм. т.е.
for (i=0;i<10;i++) if (i) i++; else ; // согласитесь немного туповато выглядит
либо добавить фигурные скобки
for (i=0;i<10;i++) { if (i) i++; }
Проверено в MS VC 6 и .NET 2003, везде тоже самое, однако в Borland тот же самый пример работает по иному, т.е. так как надо. У Microsoft'а баг даже в компиляторе? Или это так было задумано? =)
«
Последнее редактирование: 15-12-2007 17:00 от Алексей1153++
»
Записан
Alf
Гость
Re: Bug?
«
Ответ #1 :
01-05-2006 06:59 »
Попробовал то же самое в Studio 6.0 и 2003, на версиях исполняемого файла Debug и Release. Прошел цикл в пошаговом режиме. Во всех случаях получил правильный результат.
Мне не удалось воспроизвести ошибку.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: Bug?
«
Ответ #2 :
01-05-2006 10:03 »
acc15
, всё работает, тебя , наверное, смутило вот что:
Код:
int iii;
int i;
for (i=0;i<10;i++)
if (i)
i++;
iii++;
если под дебагом смотреть, то указатель команд после каждого цикла попадает на строку iii++; , однако на не выполняется. После этого - переход в начало цикла
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: Bug?
«
Ответ #3 :
01-05-2006 10:04 »
1372: for (i=0;i<10;i++)
0040974C mov dword ptr [ebp-0Ch],0
00409753 jmp CReversiGrid1153::OnDestroy+4Eh (0040975e)
00409755 mov ecx,dword ptr [ebp-0Ch]
00409758 add ecx,1
0040975B mov dword ptr [ebp-0Ch],ecx
0040975E cmp dword ptr [ebp-0Ch],0Ah
00409762 jge CReversiGrid1153::OnDestroy+65h (00409775)
1373: if (i)
00409764 cmp dword ptr [ebp-0Ch],0
00409768 je CReversiGrid1153::OnDestroy+63h (00409773)
1374: i++;
0040976A mov edx,dword ptr [ebp-0Ch]
0040976D add edx,1
00409770 mov dword ptr [ebp-0Ch],edx
1375:
1376: iii++;
00409773 jmp CReversiGrid1153::OnDestroy+45h (00409755)
00409775 mov eax,dword ptr [ebp-8]
00409778 add eax,1
0040977B mov dword ptr [ebp-8],eax
1377:
1378:
1379: }
0040977E pop edi
«
Последнее редактирование: 01-05-2006 10:06 от Алексей1153
»
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
acc15
Гость
Re: Bug?
«
Ответ #4 :
01-05-2006 10:51 »
Цитата
если под дебагом смотреть, то указатель команд после каждого цикла попадает на строку iii++; , однако на не выполняется. После этого - переход в начало цикла
мда... Алексей прав... нехватило мне серого вещества ещё раз на кнопку нажать. =). Однако логика билла поражает.
«
Последнее редактирование: 01-05-2006 10:53 от acc15
»
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
(Модератор:
Вад
) > Тема:
Bug?
Загружается...