Если у вас есть цикл:Выход цикла без перерыва/возврата/если
for(i=0;i<10;i++){}
Теперь, когда i==5
, как можно выйти из цикла для полностью без использования break
, return
или if
?
Если у вас есть цикл:Выход цикла без перерыва/возврата/если
for(i=0;i<10;i++){}
Теперь, когда i==5
, как можно выйти из цикла для полностью без использования break
, return
или if
?
for(i=0;i<10;i++){
(i==5) ? goto Outer : //do something;
}
Outer:
//do something
Это приводит к синтаксической ошибке. https://ideone.com/29e6sS –
@may быть, потому что '// делать что-то 'комментарий, вам действительно нужно что-то там сделать. – rptwsthi
Даже с чем-то там я все еще получаю ошибку компиляции. Ему не нравится, что он находится там. –
Лучшее, что я мог придумать было это:
for (int i = 0; i < 10; i++)
{
i = (i == 5) ? 10 : i;
Trace.WriteLine("i = " + i.ToString());
}
... что вызовет цикл запустить шесть раз (я = 0..5) и отображение этого ..
i = 0
i = 1
i = 2
i = 3
i = 4
i = 10
альтернативный способ «выйти из цикла» (в частности, противным образом) будет делать это ...
for (int i = 0; i < 10; i++)
{
int a = 3/((i == 5) ? 0 : 1);
Trace.WriteLine("i = " + i.ToString());
}
..что сбой, errr, успешно выходит из цикла без использования команд break
, return
или if
.
i = 0
i = 1
i = 2
i = 3
i = 4
A first chance exception of type 'System.DivideByZeroException' occurred in MikesProgram.dll
язык C# .it был интервью вопрос actually..curious
Могу ли я получить работу?
Мне нужно будет проверить ваше здоровье & стоматологические планы, и я должен уйти рано по четвергам, чтобы собрать моих дочерей из школы.
;-)
Dunno о работе, но спасибо за помощь :-) :-) – tkokane
Черт побери. Полагаю, мне нужно продолжать служить Биг-Мак. Вы хотите, чтобы с этим было фри? –
for (int n = 0; n < 10; n++)
{
n += (n/5) * 5;
}
ну вот еще один способ, если вы хотите разорвать обработку, когда именно i = 5
без использования break
, return
или if
for (int lowsetLimit = 0, highestLimit = 10, i = lowsetLimit; i < highestLimit; i++)
{
//normal code which process before i gets eqaul to 5 goes here...
i = (i < 5) ? i : highestLimit; //and here is the pivot point.
}
Да, это было полезно – tkokane
Вопрос говорит, что цикл должен закончиться когда i = 5, в нем ничего не говорится о запуске, так что это должно быть действительно (тройное операторное решение лучше, но если нам не разрешено использовать какой-либо условный оператор)
for (int i = 0; i < 10; i++)
{
i=i-4;
Console.WriteLine("i = " + i.ToString());
i=i+4;
}
это начинается на -4 и заканчивается на 5.
Реальный ответ, конечно, будет следующим:
for (i=0; i!=5; i++)
{
// do something
}
Но давайте сделаем это немного более общий характер: если остановить (выражение) становится истинным.
Второй аргумент цикла for - это логическое выражение, которое определяет, продолжать ли цикл со следующим элементом или нет.
Так что, если вы хотите, чтобы остановить цикл из-за каких-либо условий:
for (i=0; !(expression) && i<10; i++)
{
// do something
}
Это работает с использованием while
и goto
:
for (int i = 0; i < 10; i++)
{
while (i < 5)
{
Console.Write(i + " ");
goto OutsideWhile;
}
OutsideWhile:
continue;
}
// 0 1 2 3 4
Вопрос гласит, что вам запрещено использовать команду «if» ...! –
@MikeGledhill - спасибо, отредактирован –
Вы не упомянуть, какой язык вы используете. Почему вы хотите сделать это без использования перерыва, возврата или если? –
Язык - это C# .Это был вопрос интервью на самом деле..curious – tkokane
'for (i = 0; i <5; i ++) {}' – GazTheDestroyer