Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Странная ошибка в for [D6, WinXP]


Страницы:   1 2

Pasha L ©   (2007-01-12 22:11:00) 

Здравствуйте. Такая вот странная задача:
вызываю
for y:=0 to 2 do
 for x:=0 to 9 do
   ar[y,x]:=0;

происходит что-то непонятное. Поставил брейкпоинт на заколовок первого цикла, и выясняется, что y принимает сначала значение не 0, а 3. x принимает значение 10. хоть размеры массива ar 0..2 0..9, ошибка не вылазит... потом, в следующем цикле, вообще вылазит ошибка, такая же странная, как эта проблема, так что мне кажется, они имеют одинаковые корни. Давно программирую, но с таким не сталкивался.


sniknik   (2007-01-12 22:50:00) [21]

> переменные цикла еще не определены.
ага, и при первом заходе не определены и после неопределенно до 0 меняются... ;о))
проверь.

переменные в данном случае не используются т.к. из индексирования массива они тоже выкинуты оптимизатором...


Almaz   (2007-01-12 22:38:00) [22]


> оптимизатор. цикл с проверкой на ноль после операции "легче"
> чем с дополнительной проверкой на конкретную цифру.

Учитывая тот факт, что переменные цикла используются внутри цикла, оптимизатор изменять порядок цикла не должен.

ИМХО, правильный ответ уже озвучили в первом посте - на первой строчке цикла при первом заходе переменные цикла еще не определены.


sniknik   (2007-01-12 22:32:00) [23]

> что y принимает сначала значение не 0, а 3.
оптимизатор. цикл с проверкой на ноль после операции "легче" чем с дополнительной проверкой на конкретную цифру.

> вообще вылазит ошибка
а вот этого быть не должно, код правильный (та часть что сдесь) поведение стандартное.


DrPass   (2007-01-12 22:31:00) [24]


> Возможно что-то с операциями с указателями в других областях
> кода.

В данном случае - скорее всего, просто у компилятора включена оптимизация


tesseract   (2007-01-12 22:24:00) [25]


> что y принимает сначала значение не 0, а 3.


Или  фаза луны или не умеешь пользоваться отладчиком. Возможно что-то с операциями с указателями в других областях кода.


zamtmn   (2007-01-12 22:23:00) [26]

>>Поставил брейкпоинт на заколовок первого цикла, и выясняется, что y принимает сначала значение не 0, а 3
на этой строчке y еще не отределен
>> потом, в следующем цикле, вообще вылазит ошибка
ar случайно не указатель?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо