1
resposta

Sobre o "!"

Estou com dificuldade em entender pois na minha cabeça há duas interpretações: se, int achou= 0 então a variável é interpretado como não achou pois ela recebe falso

E quando é digitado "!achou", do mesmo jeito do primeiro caso, é interpretado "não achou", mas se o "!" altera a variável então ela deveria significar achou=1 oq a faria receber verdadeiro

Posso estar fazendo uma bagunça mas não consigo entender por isso

1 resposta

Olá, Maycon! Tudo bom?

Quando você diz achou = 0, um '=' significa atribuição, isto é, você atribui o valor 0 ao 'achou'. Em C, zero representa falso. Então achou == 0 significa falso. O uso do ! não altera a variável, ela continua sendo zero, ela só é intepretada como o oposto de achou, algo como: achou = 0, então !achou = 1 achou = 1, entao !achou = 0 Em ambos os casos, a variável continua a mesma. A razão de usar o !achou dentro do if ou while é para ser interpretado como True e excutar a condição. Exemplo:

achou = 0
if (achou) {
 printf("Dentro do if") // Não imprime porque achou == 0
}
if(!achou) {
 printf("Dentro do if") // Aqui imprime pois achou == 0 mas o '!' inverte o valor sem alterar a variável
 }