Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.07.05;
Скачать: [xml.tar.bz2];

Вниз

Warning: FOR-Loop variable "i" may be undefined after loop   Найти похожие ветки 

 
partizan   (2009-05-16 16:26) [0]

Если после цикла for i:=1 to n использовать переменную i - выдается такое предупреждения, однако все вроде нормально работает, после цикла i имеет значение n+1, как и следовало ожидать.

Просто стало интересно, действительно-ли может выйти ошибка (т.е. может в переменной i оказаться другое значение)?


 
KilkennyCat ©   (2009-05-16 16:49) [1]

А мне просто интересно, действительно ты собираешься использовать эту переменную?


 
Anatoly Podgoretsky ©   (2009-05-16 16:56) [2]

> partizan  (16.05.2009 16:26:00)  [0]

Это не так, это частный случай.


 
Игорь Шевченко ©   (2009-05-16 18:37) [3]


> действительно-ли может выйти ошибка (т.е. может в переменной
> i оказаться другое значение)?


действительно может


 
Vinum   (2009-05-16 19:14) [4]

>после цикла i имеет значение n+1, как и следовало ожидать.

А я ожидал i=n :)


 
palva ©   (2009-05-16 19:23) [5]


> А мне просто интересно, действительно ты собираешься использовать эту переменную?

А почему бы не использовать? Скажем, цикл что-нибудь ищет, при удаче выходит по break или goto. Тогда эта переменная содержит номер найденного. Если n+1, значит не нашли. Стандартный прием на фортране. Да раньше и на паскале так можно было. Насколько я помню. Теперь же оптимизатор может изменить направление прохождения цикла, или в условиях for i := 10 to 20 пройти его 10 downto 0.


 
Андрей (начинающий)   (2009-05-16 22:15) [6]


> Игорь Шевченко ©   (16.05.09 18:37) [3]

А в каких случаях может? Для repeat и while то же самое? Т.е. после кода

x:=0;
for i:=0 to 10 do inc(x);

i может быть не равно 10? В справке ничего похожего не нашел.


 
Игорь Шевченко ©   (2009-05-16 22:35) [7]


> А в каких случаях может?


View|Debug windows|CPU подскажет


 
AndreyV ©   (2009-05-16 22:41) [8]

> [6] Андрей (начинающий)   (16.05.09 22:15)
> Для repeat и while то же самое?

Здесь ты сам управляешь переменными.


 
Palladin ©   (2009-05-17 08:49) [9]


> Андрей (начинающий)   (16.05.09 22:15) [6]
> x:=0;for i:=0 to 10 do inc(x);

После этого кода i, скорее всего, будет 0


 
KilkennyCat ©   (2009-05-18 02:31) [10]


> palva ©   (16.05.09 19:23) [5]

Мы о разном. В твоем варианте компилятор не ругнется.


 
AndreyV ©   (2009-05-18 02:48) [11]

> [5] palva ©   (16.05.09 19:23)
> Скажем, цикл что-нибудь ищет
...
> Теперь же оптимизатор может изменить
> направление прохождения цикла, или в условиях for i := 10
> to 20 пройти его 10 downto 0.

А если переменная используется в теле цикла? раз поиск чего-то, то наверно она участвует.


 
Юрий Зотов ©   (2009-05-18 03:52) [12]

> partizan

Видите, какой интересный вопрос Вы задали?
Как много мнений...


 
BOB16   (2009-05-18 11:38) [13]

> partizan

Где-то раньше читал, что в Delphi переменные в циклах for() представляют собой в реальности не ячейки памяти, а реальные регистры процессора(ов), а посему не рекомендуется к ним обращаться вне цикла применения.


 
Anatoly Podgoretsky ©   (2009-05-18 11:50) [14]

> BOB16  (18.05.2009 11:38:13)  [13]

Зачем гадать?
Справка однозначно говорит, что After the for statement terminates (provided this was not forced by a break or an exit procedure), the value of counter is undefined.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.07.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
2-1242385082
ford
2009-05-15 14:58
2009.07.05
сбросить файловый буффер


15-1241684326
test
2009-05-07 12:18
2009.07.05
Borland Software продана за 75 млн долларов


2-1242718910
Trifle
2009-05-19 11:41
2009.07.05
Имя и права юзера


15-1240840826
TStas
2009-04-27 18:00
2009.07.05
Насколько такая защита эффективна?


2-1242503429
R0k
2009-05-16 23:50
2009.07.05
Перевернутые числа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский