1
resposta

resposta final do módulo 3

na resposta final do módulo 3 o while não é parado com break, mas ele está escrito como "while(!acerto)", não entendi como e para que isso funciona, e o pq desta parte fazer toda a diferença na hora de finalizar o while, tirando a necessidade do break.

1 resposta

Olá, Victor. Tudo bom? Não assisti aos vídeos desse curso então posso estar enganado, mas eu imagino que acerto tenha sido declarado inicialmente com o valor 0, certo? Se sim, o que ocorre é que o sinal de ! é um operador lógico NOT que "inverte" o resultado do que seria TRUE para FALSE e vice versa. Dentro do while, ele só interpreta TRUE ou FALSE, ou seja, se a condição for verdadeira, o while vai rodar. Se for falsa, ele para. Em C, não existe exatamente um boleano, então o C considera 0 como falso e qualquer coisa diferente de 0 como verdadeiro. Logo, se você passar acerto = 0 para o while, ele vai interpretar como falso e sair. Como o acerto (provavelmente) foi declarado como 0, é preciso negar o resultado para que o falso vire verdadeiro e o while faça seu trabalho de loop. De novo, estou apenas supondo pq não assisti aos vídeos, mas eu imagino que o instrutor, ao achar a resposta certa, alterou a variável acerto para 1 (que seria true, mas como o while está negando o resultado, !acerto = 1 == falso), fazendo com que o while não repita o loop.