Нужен ли break?

izolenta1801
izolenta1801 аватар
Offline
Зарегистрирован: 17.04.2020

Здраствуйте. Нужны ли break внутри switch, если там есть return?

unsigned char Func(unsigned char method)
{
    switch(method)
    {
        case 1:
            //code
           return 1;
           //break??

        case 2:
            //code
            return 2;
    }
}

 

b707
Offline
Зарегистрирован: 26.05.2017

так проверьте

unsigned char Func(unsigned char method)
{
    switch(method)
    {
        case 1:
            //code
           return 1;
           Serial.println(" case 1 after return");
           //break??

        case 2:
            //code
            return 2;
             Serial.println(" case 2 after return");
    }
}

 

izolenta1801
izolenta1801 аватар
Offline
Зарегистрирован: 17.04.2020

Спасибо. break не нужен.

nik182
Offline
Зарегистрирован: 04.05.2015

break это goto на последнюю скобку switch. А goto истинные программисты боятся использовать. Фобия такая, что их заподозрят, что они не настоящие. Поэтому стыдливо goto заменили на break. Break и без return можно не ставить, тогда после прыжка на нужный case с него и до конца будут выполнятся все case по порядку. И даже видел программу где этим пользовались, собирая вывод на экран.    

Green
Offline
Зарегистрирован: 01.10.2015

Да со switch case и не такого можно намудрить. Вот широко известный в узких кругах пример:

 n = (count + 7) / 8;
  if (!count) return;
  switch (count % 8) {
    case 0: do { *to++ = *from++;
    case 7:      *to++ = *from++;
    case 6:      *to++ = *from++;
    case 5:      *to++ = *from++;
    case 4:      *to++ = *from++;
    case 3:      *to++ = *from++;
    case 2:      *to++ = *from++;
    case 1:      *to++ = *from++;
               } while (--n);
  }