Por que um loop do while é executado após o freio?[fechado]
Pergunta
Me deparei com uma situação estranha aqui é o que acontece.Estou usando um do while
loop e excede uma função while mais uma vez após o freio.
Aqui está uma versão simplificada do que acontece:
int i = 0;
do{
if(i>=1) break;
}while(i++);
E depois disso i
o valor é 2.Estou apenas curioso para saber se é assim que deveria ser ou cometi um erro em algum lugar da minha versão mais copmlex deste código.
Esta é uma solução fácil para isso, só preciso atribuir um para dizer um iTemp
variável no início do wgile e use isso em vez de i
.
P.S.eu estava usando dois do while
faz um loop dentro do outro, talvez seja isso que causou isso?
EDITAR:Vamos lá pessoal, me dê um tempo, foi um erro de digitação.:D
Solução
P.S.Eu estava usando dois loops do while, um dentro do outro, talvez seja isso que causou isso?
Poderia muito bem ser.A break
(observe a grafia) só sairá do um loop, portanto, se estivesse dentro do loop interno, ele sairia desse loop, mas continuaria a execução imediatamente após o final do loop interno.No caso (bastante comum) do loop externo terminando imediatamente após o interno, você acabaria executando a condição do loop externo novamente.
Outras dicas
brake
não é uma palavra-chave e sua versão modificada nem sequer é compilada.A versão antiga é executada, ou seja, sem o novo intervalo.
Solução:Usar break
.
atualizar:
P.S.Eu estava usando dois loops do while, um dentro do outro, talvez seja isso que causou isso?
Sim. break
apenas sai do loop mais interno em que está escrito.
A propósito, percebo que o loop exibido sempre será executado apenas uma vez.Sua condição de loop é i++
, que incrementa i
e te dá o valor antes o incremento.Antes do seu primeiro incremento, i
é 0
, portanto, sua condição de loop é 0
na primeira execução, portanto, é executado uma vez.
verifique seu break
não brake
?
int i = 0;
do
{
if(i>=1)
break;
}while(i++);
a condição de looping e as condições de bico são impensável."desculpe se pareço rude"