Текущий архив: 2006.10.15;
Скачать: CL | DM;
Внизif else Найти похожие ветки
← →
pqpqp (2006-09-30 18:54) [0]Глупый вопрос, в приведенном коде else работает для if x = 0, а как для первого if x < 5 then сделать else. Без begin ... end не обойтись?
x := 10;
y := 10;
if x < 5 then
if x = 0 then y := 0
else
y := 5;
← →
Dmitrij_K (2006-09-30 18:59) [1]
x := 10;
y := 10;
if x < 5 then
if x = 0 then y := 0 else
else
y := 5;
← →
Anatoly Podgoretsky © (2006-09-30 19:09) [2]А используй ты операторные скобки, что бы не было подобного рода проблем.
← →
Vovan#1 (2006-09-30 19:16) [3]Иногда помогает
[code]
x := 10;
y := 10;
if x >= 5 then
y := 5
else
if x = 0 then y := 0;
[/code]
А так да, из разряда Delphi suxx.
← →
Kolan © (2006-09-30 19:19) [4]
> Без begin ... end не обойтись?
Нет.
← →
TUser © (2006-09-30 21:29) [5]> Нет.
запросто
label a, b;
begin
...
if x < 5 then goto a
if x = 0 then y := 0
goto b;
a: // else
y := 5;
b:
end;
← →
Kolan © (2006-09-30 21:41) [6]
> TUser © (30.09.06 21:29) [5]
:)X := 10;
Y := 10;
if X < 5 then
begin
if X = 0 then
Y := 0
end
else
Y := 5;
← →
palva © (2006-09-30 21:53) [7]Dmitrij_K (30.09.06 18:59) [1]
По-моему самый естественный вариант.
← →
Kolan © (2006-09-30 22:06) [8]
> По-моему самый естественный вариант.
А он правильно работает? У меня ума не хватает понять его..var
X, Y: Integer;
begin
x := 11;
y := 10;
if x < 5 then
if x = 11 then
y := 0
else
Y := 3
else
y := 5;
ShowMessage(IntToStr(Y));
end;
Зачем тадаif x = 11
← →
palva © (2006-09-30 22:12) [9]Между двумя else стоит пустой оператор. По правилам языка паскаль пустое место является оператором.
← →
Kolan © (2006-09-30 22:16) [10]
> palva © (30.09.06 22:12) [9]
Знаю одно. Сам часто обжигался на том что условия срабатываюбт неверно только потому что я не поставил операторные скобки. Конкретные примеры не помню, но для себя правило выработал. Чуть сложнеif ... then ... else
я их ставлю :). И сё больше не ошибаюсь.
← →
palva © (2006-09-30 22:20) [11]Конечно, надо ставить. В некоторых корпоративных стандартах они просто обязательны. В некоторых языках (c, perl) вместо begin end используются {}. Так вот, в c они не обязательны, а в perl и, по-моему в c# обязательны, чтоб не было у программиста соблазна экономить на спичках.
← →
TUser © (2006-09-30 23:45) [12]> Так вот, в c они не обязательны
И, кстати, в паскале тоже, что не есть гуд. Тут привлекался я в качестве светлой головы для поиска ошибки. Считалось что-то не так. Было написано (на си)if (...);
{
while (...)
{
...
}
}
Понятно, что точка-запятая поставлена на автопилоте и сделано это зря.
И паскаль аналогично будет в случаеwhile ... do;
А был бы обязателен непустой оператор (хотя бы {}) - не было бы такой проблемы.
Так что пустые операторы - все-таки нехорошо. Необходимости в них нет, а проблемы возникнуть могут.
Страницы: 1 вся ветка
Текущий архив: 2006.10.15;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.047 c