operador lógico
Junta condições: `&&` é e, `||` é ou, `!` é não.
a && b só é verdadeiro quando os DOIS são verdadeiros. a || b é verdadeiro quando pelo menos um é.
O C avalia da esquerda pra direita e para assim que já sabe a resposta. Isso tem uso prático: em j >= 0 && v[j] > chave, o teste do índice vem primeiro justamente pra não ler fora do .
!a inverte: vira verdadeiro se a era falso.
exemplo.cclique numa linha pra entender ela