C Fundamentos Básico
Operadores
Em C, os operadores são símbolos que realizam operações sobre valores e variáveis. Eles são a base para qualquer cálculo ou tomada de decisão no programa. Neste card, vamos revisar os principais tipos: aritméticos, relacionais, lógicos, incremento/decremento, bit a bit e atribuição, além de entender a precedência entre eles.
Os operadores aritméticos (+, -, *, /, %) trabalham com números. Os relacionais (==, !=, <, >, <=, >=) comparam valores e retornam 1 (verdadeiro) ou 0 (falso). Os lógicos (&&, ||, !) combinam condições booleanas. Já os operadores de incremento (++) e decremento (--) somam ou subtraem 1 de uma variável, com formas prefixada e pós-fixada que diferem no momento da avaliação.
Os operadores bit a bit (&, |, ^, ~, <<, >>) manipulam os bits individuais de inteiros. Eles são muito usados em programação de baixo nível, otimizações e manipulação de flags. Por fim, a precedência define a ordem de avaliação: por exemplo, * tem precedência maior que +, e parênteses podem forçar uma ordem específica. Entender isso evita erros sutis.
Pontos-chave
- Operadores aritméticos seguem a precedência matemática:
*,/,%antes de+,-. ++e--podem ser prefixados (++x) ou pós-fixados (x++), alterando o valor da expressão.- Operadores bit a bit operam diretamente sobre a representação binária dos inteiros.
&&e||usam curto-circuito: o segundo operando pode não ser avaliado.- Use parênteses para deixar a precedência explícita e evitar bugs.
#include <stdio.h>
int main(void) {
// Aritméticos
int a = 10, b = 3;
printf("Soma: %d\n", a + b);
printf("Divisao inteira: %d\n", a / b);
printf("Resto: %d\n", a % b);
// Incremento
int x = 5;
printf("Pos-incremento: %d\n", x++); // imprime 5, depois x vira 6
printf("Pre-incremento: %d\n", ++x); // x vira 7, imprime 7
// Bit a bit
unsigned int p = 0b1100; // 12
unsigned int q = 0b1010; // 10
printf("AND bit a bit: %u\n", p & q); // 1000 = 8
printf("OR bit a bit: %u\n", p | q); // 1110 = 14
printf("XOR bit a bit: %u\n", p ^ q); // 0110 = 6
printf("Deslocamento a esquerda: %u\n", p << 1); // 11000 = 24
// Lógicos e precedência
int r = 5, s = 10;
int resultado = (r > 0 && s < 20) || (r == s);
printf("Resultado logico: %d\n", resultado); // 1 (verdadeiro)
// Precedência: * antes de +
int calc = 2 + 3 * 4;
printf("2 + 3 * 4 = %d\n", calc); // 14
return 0;
}