Форум: "Прочее";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизИспользование переменной-счетчика цикла после выхода из оного Найти похожие ветки
← →
Kostafey © (2007-05-06 17:34) [0]Все языки уж в голове перепутались.
Вот так:
for i:=0 to N do
if SomeArray[i]=SomeConst then break;
X:=i;
писать можно ?
Или значение i после выхода из цикла будет неопределенное?
Попробовал- все работает. Или это случайно заработало?
← →
ferr © (2007-05-06 17:35) [1]Использовать нельзя т.к. компилятор не даёт никаких гарантий по поводу значения на выходе.
← →
Sergey Masloff (2007-05-06 17:39) [2]использовать нельзя и это явно описано в документации. Несмотря на то что работает.
Учись писать правильно. За такой код (варнинг компилятора там по-любому) в некоторых конторах 20$ с программера снимают за каждый случай.
← →
homm © (2007-05-06 17:39) [3]> Или это случайно заработало?
Нет, не случайно, текушие реализации компилятора позволяют так делать фактически, но дикларировани, что переменная неопределена, щначит лучше не пользоваться. В буду щих версих все может измениться. А может и сейчас это не для всех случаев верно.
← →
ferr © (2007-05-06 17:40) [4]> Нет, не случайно, текушие реализации компилятора позволяют
> так делать фактически, но дикларировани, что переменная
> неопределена, щначит лучше не пользоваться. В буду щих версих
> все может измениться. А может и сейчас это не для всех случаев
> верно.
ересь.
← →
Kostafey © (2007-05-06 17:51) [5]> в некоторых конторах 20$ с программера снимают за каждый
> случай
Мне такое еще не скоро светит :)
В мой код уже лет...ээ... непомню сколько никто не
заглядывал (корме форума).
> Учись писать правильно. За такой код (варнинг компилятора
> там по-любому)
А вот и нет. Именно в приведенном в [0] варианте варнинга нет.
Но если вписать
for i:=0 to N do
if SomeArray[i]=SomeConst then break;
// вот сюда
X:=i;
пару операторов, то варнинг выскочит.
Значит пишем-сс так:
for i:=0 to N do
if SomeArray[i]=SomeConst then
begin
Currenti:=i;
break;
end;
X:=Currenti;
← →
{RASkov} © (2007-05-06 17:54) [6]> [5] Kostafey © (06.05.07 17:51)
> Значит пишем-сс так:
>
> for i:=0 to N do
> if SomeArray[i]=SomeConst then
> begin
> Currenti:=i;
> break;
> end;
>
> X:=Currenti;
А почему бы не так?for i:=0 to N do
if SomeArray[i]=SomeConst then
begin
X:=i;
break;
end;
← →
homm © (2007-05-06 17:58) [7]> ересь.
Что ересь? Сам то пробовал? Все работает в простейших случаях. Насчет ВСЕХ случаев я и написал, что неизвестно.
← →
Kostafey © (2007-05-06 18:04) [8]> А почему бы не так?
:)
Я имел в виду, что потом сохраненное значение i как-то используем
← →
{RASkov} © (2007-05-06 18:11) [9]> [8] Kostafey © (06.05.07 18:04)
>Я имел в виду, что потом сохраненное значение i как-то используем
Ну пожалуйста.... в X-е, зачем еще одна переменная Currenti
;)
А-а-а.... понял :) Пример нужно было тогда ченить типа так:for i:=0 to N do
if SomeArray[i]=SomeConst then
begin
Currenti:=i;
break;
end;
ComboBox.ItemIndex:=Currenti+5;
ListBox.ItemIndex:=Currenti-5;
А то выглядит, что задействуются две временные(ненужные) переменные...
:) Вот докопался, да? Сорри. ;)
← →
Kostafey © (2007-05-06 18:16) [10]> А-а-а.... понял :) Пример нужно было тогда ченить типа так:
именно так!
:)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c