Publicidade

Aula 3: Variáveis

O que é uma variável em C? Aprenda int, double e char com diagramas claros.

📖 O que você vai aprender nesta página
✅ Essencial
  • int para inteiros, double para decimais, char para um caractere
  • Declarar: int x;, atribuir: x = 5;
  • = é atribuição, não igualdade
  • Sempre inicialize antes de usar (int x = 0;)
⭐ Leia se tiver tempo
  • O tamanho dos tipos é definido pela implementação (conheça os valores típicos)
  • int / int trunca — pegadinha clássica de iniciante
  • Overflow de inteiro com sinal é comportamento indefinido

O que é uma Variável — Um Espaço Nomeado para Armazenar Dados

Uma variável é um espaço nomeado de armazenamento que guarda um dado.
O nome da variável rotula o espaço; o valor é o que está guardado lá dentro.
Quando você precisa do dado depois, é só se referir a ele pelo nome.
variável a
?
+
variável b
?
=
variável c
?

Onde as Variáveis Vivem — Dentro do Computador

Os valores das variáveis ficam armazenados na memória (RAM) do computador.
CPU (Processador)
Executa o programa e faz os cálculos.
Memória (RAM)
Guarda os dados com os quais a CPU está trabalhando. As variáveis vivem aqui.
Disco Rígido (Armazenamento)
Armazenamento de dados de longo prazo.

Dentro da Memória — O Mundo dos Bits (0/1)

A memória é uma longa sequência de bits, cada um guardando 0 ou 1. O valor de uma variável ocupa alguns bits consecutivos, e o nome da variável rotula essa região.
Representação binária de int num = 5; na memória (32 bits)

Tipos de Dados — Toda Variável Tem um Tipo

Toda variável tem um tipo, e cada tipo reserva um número diferente de bytes na memória.
Tipo inteiro: int
Exemplos: -2, -1, 0, 1, 2, 3, ...
Sem parte fracionária.
Tipicamente 4 bytes (definido pela implementação).
int num = 5;
Ponto flutuante: double
Exemplos: 1.2, -2.68, 3.14, 79.69, ...
Para números com parte decimal.
Tipicamente 8 bytes (IEEE 754 double).
double pi = 3.14;

Comparação de Tamanho (valores típicos)

char (1B)
int (4B)
float (4B)
double (8B)
Importante: o padrão C só fixa larguras mínimas (por exemplo, int ≥ 16 bits, long ≥ 32 bits). Os tamanhos reais são definidos pela implementação. Os números acima são típicos em desktop/Linux/macOS modernos com gcc. Imprima sizeof(int) via %zu para conferir no seu ambiente.

Escolha um tipo pela "forma da caixa"

Escolha o tipo com base nos valores que você precisa guardar. Na dúvida, siga este fluxograma:
① Precisa de decimais?
 → Sim: double (mais preciso que float)
 → Não: vá para ②
② Armazenando um único caractere?
 → Sim: char
 → Não: vá para ③
③ Inteiros
 → Valores até ±2.147.483.647: int (use por padrão)
 → Maiores: long long
TipoUso típicoFaixa aproximada
intcontagens, índices, pontuações≈ -2,1B a +2,1B em int de 32 bits
long longpopulações, timestamps, IDs grandespelo menos 64 bits, ≈ ±9,2 × 1018
doublealturas, médias, probabilidades15 a 17 dígitos significativos (IEEE 754)
charum caractere ASCIItipicamente -128 a 127 (sinal definido pela implementação)
unsigned inttamanhos não negativos0 a ≈4,2B em int de 32 bits
Regra prática para iniciantes: int para números inteiros, double para decimais. Raramente você vai precisar de float, short ou long por conta própria.

Pegadinhas comuns de iniciantes

Pegadinha 1: int dividido por int trunca

Uma das pegadinhas mais comuns para iniciantes em C:
int a = 7;
int b = 2;
double r = a / b;      // r é 3.0 (não 3.5!)
printf("%f\n", r);   // → 3.000000
Por quê? int / int devolve int (a parte fracionária é descartada). 7/2 é 3, e esse 3 é então armazenado como 3.0 ao ir para um double.
// Correção: faça cast de um operando para double
double r = (double)a / b;   // → 3.5
// Ou declare como double desde o início
double a = 7, b = 2;
double r = a / b;                  // → 3.5

Pegadinha 2: estourar a faixa do int

Um int de 32 bits só segura cerca de ±2,1 bilhões. Dá para contar a população do Brasil; a do mundo não cabe.
int big = 2000000000;
big = big + 2000000000;       // deveria ser 4B...
printf("%d\n", big);       // resultado indefinido (normalmente aparece um número negativo no hardware real)
Importante: no padrão C, overflow de inteiro com sinal é comportamento indefinido. Não memorize como "dá a volta para negativo". Os compiladores assumem que overflow nunca acontece ao otimizar, então o resultado pode ser genuinamente imprevisível — laços que desaparecem, resultados bizarros, o que você imaginar.
Em contrapartida, overflow de unsigned é definido e faz módulo 2N.
Opções mais seguras: ① usar long long (%lld); ② verificar contra INT_MAX (de <limits.h>) antes da operação; ③ ativar detecção em tempo de execução com -fsanitize=undefined no gcc/clang.

Pegadinha 3: especificador de formato errado

Um especificador de formato do printf precisa casar com o tipo do argumento. Se não bater, você vê saída esquisita — ou pior, comportamento indefinido.
TipoFormatoExemplo
int%dprintf("%d", 42);
double%f / %lfprintf("%f", 3.14);
char%cprintf("%c", 'A');
char * (string)%sprintf("%s", "hello");
long long%lldprintf("%lld", 9000000000LL);

Pegadinha 4: variáveis não inicializadas

int x;               // só declaração; conteúdo indefinido
printf("%d\n", x);  // → valor lixo (muda a cada execução)

// Correto:
int x = 0;           // inicialize com 0
Sempre inicialize: diferente de Python, C não zera suas variáveis automaticamente.

Pegadinha 5: regras de nomenclatura

Declaração, Atribuição e Sobrescrita

Antes de usar uma variável, você declara (o que reserva espaço na memória) e depois atribui um valor a ela.
int num;         // Declaração: reserva memória para a variável
num = 5;         // Atribuição: armazena um valor ( = significa "atribuir", NÃO igualdade!)
Fique atento: = não é o sinal de igual da aula de matemática — é atribuição. Ele copia o valor da direita para a variável da esquerda.
Atribuir a uma variável não declarada é erro: x = 23; → "quem é x?!"

Como Funciona a Sobrescrita

Atribuir um novo valor a uma variável sobrescreve o antigo — o valor anterior é perdido. Uma variável guarda exatamente um valor por vez.
variável num

Atribuir uma Variável a Outra

x = y; copia o valor de y para x. O próprio y permanece igual.
variável x
10
variável y
33

Execução Passo a Passo — Veja as Variáveis Mudarem

variable_demo.c

Estado das variáveis

NomeTipoValor

Saída padrão

 

Experimente — Variáveis

my_vars.c
Saída
Clique em "Executar" para rodar...
💡 Algumas coisas para tentar
Publicidade

Aulas Relacionadas

Primeiros Passos
Aula 2: Hello World
Escreva seu primeiro programa em C e aprenda o fluxo de compilar e executar.
Primeiros Passos
Aula 4: printf e scanf
Como usar printf e scanf em C. Referência completa dos especificadores de formato.
Referência
Folha de Referência de C
Referência rápida para printf, operadores, tipos e mais.
← Aula anterior
Aula 2: Hello World
Próxima aula →
Aula 4: printf e scanf

Teste de Revisão

Teste seu entendimento desta aula!

Q1. O que uma variável int pode armazenar?

Números decimais
Números inteiros
Strings

int guarda inteiros. Para decimais, use float ou double; para strings, use um array de char.

Q2. Qual destes é um nome de variável válido?

2value
my_var
int

Nomes de variáveis precisam começar com letra ou sublinhado. Nomes começando com dígito ou usando palavras reservadas como int não são permitidos.

Q3. Qual é a diferença entre double e float?

double tem mais precisão
float tem mais precisão
Não há diferença

double é ponto flutuante de dupla precisão (~15 dígitos), e float é precisão simples (~7 dígitos). double costuma ser o padrão melhor.

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