Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизОтличие делфишного CASE от сишного SWITCH Найти похожие ветки
← →
StriderMan © (2006-08-15 13:06) [0]вот такой код на делфи к сожалению не прокатывает
procedure DoSmth(AVal: integer);
begin
case AVal of
1: ShowmEssage("1");
2: ShowMessage("2");
1..2: ShowMessage("1 or 2");
end;
end;
насколько я помню, на сях такое сделать можно. Почему так?
← →
Romkin © (2006-08-15 13:08) [1]Потому что case выполняет только один пункт, первый из подходящих. После этого выходит из case.
← →
Nic © (2006-08-15 13:08) [2]Зачем нужна эта строка? :
1..2: ShowMessage("1 or 2");
← →
Джо © (2006-08-15 13:09) [3]В C при обработке каждого из вариантов в Switch"e не происходит выход из блока Switch (нужен break).
← →
Ega23 © (2006-08-15 13:12) [4]
procedure DoSmth(AVal: integer);
begin
Case AVal of
1..2 begin
case AVal of
1: ShowmEssage("1");
2: ShowMessage("2");
end;
ShowMessage("1 or 2");
end;
else Showmessage("not (1 or 2)");
end;
end;
?
← →
Desdechado © (2006-08-15 13:13) [5]В Си этоточка входа, а выход только по break, которого может и не быть вовсе. В Паскале же выполняется всегда только один кусок, что, имхо, правильнее.
Джо © (15.08.06 13:09) [3]
Да, иногда это удобно, когда выполнение проходит по совокупности последовательных веток. Но чаще является причиной скрытых ошибок.
Если я правильно помню, в C# это заблокировали.
← →
StriderMan © (2006-08-15 13:14) [6]
> Ega23 © (15.08.06 13:12) [4]
ну типа того. только это громоздко.
> Nic © (15.08.06 13:08) [2]
например в случае в каждом конкретном случае выполняются какие-то действия, но скажем в случае 1,2 нужно сделать нечто общее, а в случае 3,4 нечто другое общее.
← →
Ega23 © (2006-08-15 13:15) [7]
> ну типа того. только это громоздко.
Громоздко логику извращённую вертеть.
← →
Плохиш © (2006-08-15 13:16) [8]
> StriderMan © (15.08.06 13:06)
> Почему так?
Ответ на этот вопрос находиться в описаниях языков.
← →
Джо © (2006-08-15 13:17) [9]> [5] Desdechado © (15.08.06 13:13)
> Но чаще является причиной скрытых
> ошибок.
Согласен.
> Если я правильно помню, в C# это заблокировали.
Заблокировали. Пока break не поставишь, компилятор будет ругаться.
← →
Rouse_ © (2006-08-15 13:17) [10]
> Потому что case выполняет только один пункт, первый из подходящих.
> После этого выходит из case.
без бряка еще и на default выскочит.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c