Оператор goto и цикл while

Dima_gal
Offline
Зарегистрирован: 12.02.2013

Приветствую формучане.

Интересует вот такой вопросик. Есть следующий код

while (lab==1)
  {
    if (flag==1) {mainmenu(lab1,lab);}
    knopka=digitalRead(knop);
    if ((flag!=1)&&(knopka==1)) {goto label2;}
    gg=digitalRead(pinA);
     gg1=digitalRead(pinB);

    
    if ((gg==1)&&(gg1==1)) {lab=0;}
  }

Вот где идет проверка по переменной flag и knopka (5 строка) будет осуществлен выход из цикла и переход к метке? или надо сначала break а потом goto?

__Alexander
Offline
Зарегистрирован: 24.10.2012

переход то будет, только вернетесь ли обратно. кто знает где крутится ваш while и где label2, вы же этого не показали.

а если честно, то goto в си используется как очень большое исключение. можно обойтись и без этого.

leshak
Offline
Зарегистрирован: 29.09.2011

__Alexander пишет:

а если честно, то goto в си используется как очень большое исключение. можно обойтись и без этого.

Это еще мягко сказано. Скорее "вообще не используется". Это "рудименты прошлого". И скорее признак новичка и аларм "плохой код". Всегда код можно переписать так, что бы goto не использовался. Вообщем когда продумываете реализацию своей логики - представте что оператора goto - не существует (по крайней мере если вы не на ассемблере пишите).

Dima_gal
Offline
Зарегистрирован: 12.02.2013

Ну да. Ваще пардон))если честно осталась дурацкая превычка с универа, где много писал на фортране)))

Проверил..можно же просто break и все))

А так вы правы..новичок и есть)))буду отвыкать)