На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> If+Else VS Switch+Case. , Borland C++ Builder v.6.0.
    Только ли для удобства придумали Switch+Case?

    Непохоже, чтобы он был быстрее обычного If-Else. Меньше кода? Возможно, но Case требует дополнительного break, который если забыть - компилятор не заметит, и логика работа case нарушится.
      Быстрее if-else оно не будет, потому что оно переводится в те же ассемблерные команды условного перехода (jz/jnz и т.п.).

      "case" без "break" может быть замечено компилятором как warning
        Цитата Mr.Delphist @
        потому что оно переводится в те же ассемблерные команды условного перехода (jz/jnz и т.п.).
        Если значения меток идут подряд - вменяемый компилятор с включенной оптимизацией вставляет табличный переход. Если часть идет не подряд - сначала вставляются jz/jnz на эти "не подряд", а в конце - табличный переход для оставшихся "подряд". Хороший оптимизатор может то же самое сделать и из кучи if-else, так что выбор остается за программистом - какой из вариантов записи лучше отражает задумку автора в конкретном месте программы. У меня, например, кое-где для лучшей читаемости используется switch с одной-единственной меткой case.
        Сообщение отредактировано: Dushevny -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0171 ]   [ 16 queries used ]   [ Generated: 19.04.24, 23:54 GMT ]