Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Использование переменной-счетчика цикла после выхода из оного   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
8-1158909536
ZSergey
2006-09-22 11:18
2007.06.03
Как победить мерцание JPG при перемещении


6-1164279691
Warstone
2006-11-23 14:01
2007.06.03
Определения PID процесса, открывшего сокет


2-1179209719
balepa
2007-05-15 10:15
2007.06.03
Округление и умножение вещественных чисел Assembler


2-1179146369
POP
2007-05-14 16:39
2007.06.03
Непонятка с передачей данных (COM порт)


10-1133450229
Kot
2005-12-01 18:17
2007.06.03
Открытие xls файла с программным вводом пароля.