static int Simple() {
for (int v = 211; v < 661; v++) {
return v;
}
}
«v» в v ++ подчеркнуто, и мой отладчик говорит, что обнаружен недостижимый код.«Обнаружен недостижимый код»
static int Simple() {
for (int v = 211; v < 661; v++) {
return v;
}
}
«v» в v ++ подчеркнуто, и мой отладчик говорит, что обнаружен недостижимый код.«Обнаружен недостижимый код»
Компилятор превратит ваш цикл в нечто вроде:
int v = 211;
loop:
if (v < 661)
{
return v;
} else {
v++;
goto loop;
}
Потому что он никогда не достигнет этой части кода. Он вернется на первую итерацию цикла for
. Помните, что это порядок исполнения для цикла в C#:
for (init; condition; increment) {
body;
}
Жаль, что я не смог проверить все плакаты, которые ответили на это. – user225626
It никогда не сможет выполнить инкремент, потому что вы возвращаете значение v
после первого шага через цикл for
.
Оператор return немедленно выйдет из цикла, и v ++ не получит возможность выполнить.
Я думаю, вы имеете в виду «выход», а не «выполнить»? – Jamie
@Jamie. Вы правы. спасибо за улов. –
Вы определяете цикл for, который выполняет итерации более 450 значений, но вы возвращаетесь в первую итерацию цикла (который оставляет тело функции и, следовательно, останавливает выполнение цикла for!). По другим 449 значениям не будет повторяться, так что код недостижим.
Потому что v
увеличивается после выполнения тела петли. Но это говорит «эй, не повторяй снова, уходи!», Поэтому v
никогда не будет увеличиваться.
Почему у вас есть код, как это? Он просто возвращает 211. Часто недостижимый код означает, что у вас есть логическая ошибка в вашем коде. –
Я случайно упростил свой вопрос, ошибочно выбив условное условие, которое имеет решающее значение для логики. – user225626
И я все еще изучаю синтаксис варианта C (был незнакомым только до сегодняшнего дня с полными последствиями «возвращения»). – user225626