LINUX.ORG.RU

[C] красивость кода

 


0

0

Требуются некоторые временные переменные в теле case. Как обычно делают? Так?

switch(var) {
    1:{
          int temp1;
          char temp2;
          ...
          break;
    }
}
Или может лучше использовать if,else if...else? Просто как то некрасиво

#define GOODVARIANT 1
#define SOMEVARIANT 2

switch (variable_i)
   { 
   case GOODVARIANT:
       {      
       int number_i; 
       char * str_ch_p; 
       ... 
       break; 
       };

   case SOMEVARIANT:
       {      
       int number_i; 
       char * str_ch_p; 
       ... 
       break; 
       };

   default:
       {      
       break; 
       };
   };
xcreatepixmap
()

Нормально все. Просто ты заработался. Выйди потяни воздуха.

Andaril
()

>Или может лучше использовать if,else if...else?
НЕ лучше, ибо switch оптимизируется в таблицу переходов, и работает быстрее, чем if else.

Просто как то некрасиво

Должно быть читаемо - остальное от лукавого.

anon_666
()

Или может лучше использовать if,else if...else?


Если условий больше 2-х, то лучше switch, а так нормально

Boy_from_Jungle ★★★★
()

Ок, спасибо, успакоили

sol_linux ★★
() автор топика

а вообще код вида

if (x == 0) f0();
   else if (x == 1) f1();
   else if (x == 2) f2();
   else if (x == 3) f3();
   else if (x == 4) f4();
   else if (x == 5) f5();
должен быть оптимизирован комилятором в
switch (x) {
      case 0: f0(); break;
      case 1: f1(); break;
      case 2: f2(); break;
      case 3: f3(); break;
      case 4: f4(); break;
      case 5: f5(); break;
   }

Boy_from_Jungle ★★★★
()
Ответ на: комментарий от anon_666

> НЕ лучше, ибо switch оптимизируется в таблицу переходов, и работает быстрее, чем if else.

Самый завалявшийся компилятор должен уметь набор простых if преобразовывать в таблицу переходов. И не всякий switch будет в эту таблицу преобразован.

ntp
()
Ответ на: комментарий от Aid_

с енумами лучше, имхо

Я под этим подпишусь

ShTH
()
Ответ на: комментарий от anotheranonymous

> Сишный свитч по-любому преобразуется.

Не говори о том чего не знаешь.

anonymous
()

Все ок, правильно написали - заработался. switch - лучше, так как не проверяется каждое значение (if...elseif...else - это делают). Про кошерность оформления кода - почитай лучше «Программирование на Си» Кернигана и Ричи, там оформлено все, как надо. А так - сам понимаешь свой код, значит правильно оформил

Meerkat
()
Ответ на: комментарий от Nakgidveef

>Если так используется enum с большим разбросом значений, то не преобразуется.

Тогда там будет двоичный поиск.

legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.