Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.047 c
9-1151685359
VolanD666
2006-06-30 20:35
2007.06.03
Нормальный Lightmap


2-1179293313
antonyan
2007-05-16 09:28
2007.06.03
окно справочника 1С


2-1179105701
Ale][andr
2007-05-14 05:21
2007.06.03
Открытие файла


2-1179338905
Strate
2007-05-16 22:08
2007.06.03
Функция проверки строки...


2-1179343610
WebSQLNeederr
2007-05-16 23:26
2007.06.03
Как добавить в строку одинарные ковычки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский