![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странная ошибка в for [D6, WinXP]
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 случайно не указатель?