LinuxForum.Fans
Тема

"break to out" from for/switch

Автор: sunjob 7 сообщений 1079 просмотров
09.12.2021 11:03 · отредактировано #437053

добрый день.
разбираю код (обычный си-код, без крестов):

1. switch вложен в for
2. выброс реализован "хаком" условия for

все работает, но при "обычном" многостраничном операторе switch-case такой выход "неочевиден".

вопрос: можно-ли как ни-будь красиво/очевидно/локонично реализовать выход из цикла

text

for(i=1; i<RET; i++)
{
...
switch(i)
  {
  case 10:
  if() 
    {
    ...
    RET = 11; // break to out
    }
  break;
  ...
  case 20:
  if() 
    {
    ...
    RET = 21;
    }
  break;
  ...
  case 30:
  if() 
    {
    ...
    RET = 31;
    }
  break;
  }   // switch()
}     // for()
09.12.2021 17:27 · отредактировано #437054

sunjob, можно не раскорячивать условие на портянку, а просто указать RET1 -> RET i++. Вроде бы перенаправление правильно указал (программированием не занимался уже лет 7). :[

09.12.2021 17:29 · отредактировано #437055

да уже расчесали код, спасибо :D

п.с. правда я не понял, о чем вы?!

10.12.2021 07:50 #437056

А зачем пустые if()?
И не ясно, в какой итерации цикла произошёл выход.
Зачем вообще такая конструкция - какая прикладная задача?

10.12.2021 17:23 #437057
"ValentinK" написал:
А зачем пустые if()?

Это сокращение If switch=i...
Вообще сам цикл не имеет смысла. Там тупо идёт перечисление того, что можно связать в одно правило.

11.12.2021 05:49 #437058
"Wolfenberg" написал:
Это сокращение If switch=i...

Это не сокращение. Это пустой оператор. If switch=i - уже есть case.

"Wolfenberg" написал:
Вообще сам цикл не имеет смысла. Там тупо идёт перечисление того, что можно связать в одно правило.

Вот я и хотел узнать, что там за задача стояла, такой цикл применять.

11.12.2021 18:01 #437060

ValentinK,

"ValentinK" написал:
Вот я и хотел узнать, что там за задача стояла, такой цикл применять.

Скорее всего учебная галиматья. В реальной жизни пакистанский код никто применять не будет.

Войдите или зарегистрируйтесь, чтобы ответить.