Operadores de comparação em C (==, !=, <, >) e operadores lógicos (&&, ||, !).
if) ou "enquanto … continue" (laços com while / for), os operadores de comparação e lógicos desta aula são ferramentas essenciais.if (age >= 18) // comparação if (pass_ok && active) // E lógico while (stock > 0) // condição de laço
==, !=, >= e combiná-los via &&, || e ! para escrever qualquer condição que você precisar.==, !=, <, >, <=, >= comparam valores&& (e), || (ou), ! (não)& (E bit a bit) vs && (E lógico)== em floats — use um epsilon| Operador | Significado | Resultado para a=3, b=5 |
|---|---|---|
a == b | Igual | 0 (falso) |
a != b | Diferente | 1 (verdadeiro) |
a > b | Maior | 0 (falso) |
a >= b | Maior ou igual | 0 (falso) |
a < b | Menor | 1 (verdadeiro) |
a <= b | Menor ou igual | 1 (verdadeiro) |
| Operador | Significado | Lê-se | Exemplo |
|---|---|---|---|
A && B | A E B (ambos verdadeiros) | E | age >= 18 && age < 65 |
A || B | A OU B (qualquer um verdadeiro) | OU | day == 0 || day == 6 |
!A | NÃO A | NÃO | !finished |
| A | B | A && B |
|---|---|---|
| verdadeiro | verdadeiro | verdadeiro |
| verdadeiro | falso | falso |
| falso | verdadeiro | falso |
| falso | falso | falso |
| A | B | A || B |
|---|---|---|
| verdadeiro | verdadeiro | verdadeiro |
| verdadeiro | falso | verdadeiro |
| falso | verdadeiro | verdadeiro |
| falso | falso | falso |
== vs = — Atenção!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"); }
== significa "são iguais?"; = significa "coloque isto naquilo".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;
| Uso | Exemplo | Significado |
|---|---|---|
| Máximo de dois valores | (a > b) ? a : b | escolhe a se for maior, senão b |
| Valor absoluto | (x >= 0) ? x : -x | x 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 : 0 | divide se b não for zero, senão usa 0 |
(a>b) ? ((a>c)?a:c) : ((b>c)?b:c) são uma dor de cabeça para ler — use if-else.&& e || para montar condições compostasx != 0 && 10/x > 1 evita divisão por zero!Teste seu entendimento desta aula!
= é atribuição; == é o operador de igualdade (comparação). === não existe em C — esse é um operador do JavaScript.
1 && 0 resulta em 0 (falso), e negando isso obtemos !0 = 1 (verdadeiro).
5 > 3 é verdadeiro (1); 2 > 4 é falso (0). && só é verdadeiro se ambos os lados forem, então 1 && 0 = 0 (falso).