Questão:
E esse trecho de código, o que faz?
int chute = 0;
int numerosecreto = 42;
int acertou = chute == numerosecreto;
if(acertou) {
printf("Parabéns! Você acertou!\n");
} else {
if(chute > numerosecreto) {
printf("Seu chute foi maior do que o número secreto!\n");
}
if(chute < numerosecreto) {
printf("Seu chute foi menor do que o número secreto!\n");
}
}
Resposta na plataforma
Se a variável acertou for verdadeiro (ou seja, diferente de 0), ele imprime a mensagem de Parabéns. Caso contrário, temos mais dois ifs: se o chute for maior que o número secreto, então imprime a mensagem de chute maior. Se for menor que número secreto, imprime a mensagem de chute menor.
Como a variável acertou é o resultado da comparação entre chute e numerosecreto, então o resultado final é que temos uma mensagem para cada possibilidade: as duas variávies são iguais, uma é maior que a outra, e uma é menor que a outra.
Minha resposta
Ao tentar compilar este programa, há uma falha de execução pelo seguinte motivo:
Linha 3:
int acertou = chute == numerosecreto;
Neste trecho, a variável "acertou" foi definida como de tipo inteiro, mas a sua lógica é booleana, pois o valor de retorno da expressão chute == numerosecreto
é "FALSE" e não um número inteiro, impossibilitando o programa de compilar corretamente.