Я пишу код C, а в моем коде у меня два вложенных цикла. В конкретном состоянии я хочу break
выйти из внутреннего цикла и continue
внешнего цикла. Я попытался добиться этого, используя метку в конце кода внешнего цикла и, при условии, goto
, что метка. Однако gcc
дает ошибку, что я не могу иметь метку в конце составного оператора. Почему бы и нет?
Примечание 1: это не оператор switch
, и на этот вопрос был дан ответ в другом месте.
Примечание 2: Это не вопрос о стиле и должен ли я использовать или не использовать операторы goto
или условные переменные.
EDIT: люди попросили пример, и я могу дать слегка облегченный пример проверки того, является ли массив подмассивом другого массива
int superArray[SUPER_SIZE] = {...}, subArray[SUB_SIZE] = {...};
int superIndex, subIndex;
for (superIndex=0; superIndex<SUPER_SIZE-SUB_SIZE; superIndex+=1)
{
for (subIndex=0; subIndex<SUB_SIZE; subIndex+=1)
if (superArray[superIndex+subIndex] != subArray[subIndex])
goto break_then_continue;
// code that executes if subArray is a sub array
break_then_continue:
}