Publicidade

Operadores de Comparação e Lógicos

Operadores de comparação em C (==, !=, <, >) e operadores lógicos (&&, ||, !).

🎯 Por que estudar esta aula?
Para escrever "se … então …" (desvio condicional com if) ou "enquanto … continue" (laços com while / for), os operadores de comparação e lógicos desta aula são ferramentas essenciais.
Você vai usá-los em todas as próximas aulas. Sem eles, um programa não consegue realmente "decidir" ou "repetir" nada.
💭 Em português claro
"Se a idade for 18 ou mais, permita votar."
"Se a senha estiver correta e a conta estiver ativa, faça login do usuário."
"Enquanto houver estoque, continue vendendo."
⚙️ Em C
if (age >= 18) // comparação
if (pass_ok && active) // E lógico
while (stock > 0) // condição de laço
Objetivo desta aula: ficar à vontade com ==, !=, >= e combiná-los via &&, || e ! para escrever qualquer condição que você precisar.
📖 O que aprender nesta página
✅ Essencial saber
  • ==, !=, <, >, <=, >= comparam valores
  • && (e), || (ou), ! (não)
  • O resultado de uma comparação é 0 (falso) ou 1 (verdadeiro)
⭐ Leia se tiver tempo
  • Curto-circuito: o lado direito é ignorado quando o resultado já é conhecido
  • & (E bit a bit) vs && (E lógico)
  • Evite == em floats — use um epsilon

Operadores de Comparação — o resultado é verdadeiro (1) ou falso (0)

Uma comparação resulta no inteiro 1 (verdadeiro) ou 0 (falso).
OperadorSignificadoResultado para a=3, b=5
a == bIgual0 (falso)
a != bDiferente1 (verdadeiro)
a > bMaior0 (falso)
a >= bMaior ou igual0 (falso)
a < bMenor1 (verdadeiro)
a <= bMenor ou igual1 (verdadeiro)
Experimente:
Resultado

Operadores Lógicos — Combinando Condições

OperadorSignificadoLê-seExemplo
A && BA E B (ambos verdadeiros)Eage >= 18 && age < 65
A || BA OU B (qualquer um verdadeiro)OUday == 0 || day == 6
!ANÃO ANÃO!finished

Tabelas-verdade

E (&&)

ABA && B
verdadeiroverdadeiroverdadeiro
verdadeirofalsofalso
falsoverdadeirofalso
falsofalsofalso

OU (||)

ABA || B
verdadeiroverdadeiroverdadeiro
verdadeirofalsoverdadeiro
falsoverdadeiroverdadeiro
falsofalsofalso

== vs = — Atenção!

Bug clássico: escrever if (a = 10) quando você quis dizer ==. Isso atribui 10 a a e depois usa 10 como condição — que é sempre verdadeira.
// BUG
if (a = 10) {  // = é atribuição! a recebe 10 e a condição é sempre verdadeira
  printf("Sempre executa\n");
}

// correto
if (a == 10) {  // == é comparação. Verdadeiro só quando a é igual a 10
  printf("a é 10\n");
}
Macete: == significa "são iguais?"; = significa "coloque isto naquilo".

Operador Ternário (? :)

O operador ternário comprime um if-else simples em uma única expressão.
Sintaxe: condição ? valor_se_verdadeiro : valor_se_falso
// usando if-else
int max;
if (a > b) {
    max = a;
} else {
    max = b;
}

// uma linha com ternário
int max = (a > b) ? a : b;
Padrões comuns:
UsoExemploSignificado
Máximo de dois valores(a > b) ? a : bescolhe a se for maior, senão b
Valor absoluto(x >= 0) ? x : -xx se não negativo, senão -x
Rótulo par / ímpar(n%2==0) ? "par" : "impar"cai direto em um printf
Evitar divisão por zero(b != 0) ? a/b : 0divide se b não for zero, senão usa 0
Quando usar: ótimo para atribuições simples de dois caminhos ou argumentos de printf inline. Para qualquer coisa complexa, if-else simples é mais legível.
Evite aninhar: cadeias como (a>b) ? ((a>c)?a:c) : ((b>c)?b:c) são uma dor de cabeça para ler — use if-else.

Experimente — Comparação e Lógica

cmp.c
Saída
Clique em "Executar" para rodar...
💡 Coisas para testar
Publicidade

Aulas Relacionadas

Condicionais
Instrução if
Como escrever instruções if em C, com fluxogramas para entendimento visual.
Operadores
Atribuição e Incremento
Operadores de atribuição em C e incremento (++) / decremento (--).
Operadores
Operadores Aritméticos
Guia visual dos operadores aritméticos em C (+, -, *, /, %), incluindo armadilhas da divisão inteira.
← Aula anterior
Aula 10: Atribuição e Incremento
Próxima aula →
Aula 13: Instrução if

Teste de Revisão

Teste seu entendimento desta aula!

Q1. Qual operador em C testa igualdade?

=
==
===

= é atribuição; == é o operador de igualdade (comparação). === não existe em C — esse é um operador do JavaScript.

Q2. Qual é o resultado de !(1 && 0) ?

0 (falso)
1 (verdadeiro)
Erro

1 && 0 resulta em 0 (falso), e negando isso obtemos !0 = 1 (verdadeiro).

Q3. Qual é o resultado de 5 > 3 && 2 > 4 ?

1 (verdadeiro)
0 (falso)
Erro

5 > 3 é verdadeiro (1); 2 > 4 é falso (0). && só é verdadeiro se ambos os lados forem, então 1 && 0 = 0 (falso).

Compartilhe este artigo
Compartilhar no X (Twitter) Compartilhar no Facebook