C++: Variáveis e Tipos de Dados Básicos
Última atualização: 2026-08-26
Na Aula 02 configuramos o ambiente de desenvolvimento e podemos compilar e executar programas.
Mas programas não podem apenas exibir texto fixo — eles precisam ser capazes de lembrar coisas e processar dados. É para isso que servem as variáveis.
Assim como na matemática, você precisa definir x, y, z primeiro; em programação, você deve "declarar" variáveis antes de armazenar dados.
1. O que é uma Variável?
(1) 1.1 Variáveis no Dia a Dia
| Cenário da vida real | Equivalente em programação |
|---|---|
| Você tem um nome, mas sua idade muda todo ano | Variável: seu valor pode mudar |
| Você tem um número de identidade que nunca muda | Constante: seu valor não pode mudar |
| Você tem uma xícara que pode conter água ou cola | Variável: o tipo é fixo (xícara), o valor pode mudar (o que está dentro) |
Uma variável é uma "caixa" na memória — você pode colocar coisas nela (atribuir valores) e tirar coisas (ler valores).
(2) 1.2 Por Que Precisamos de Variáveis?
Sem variáveis, programas só conseguem fazer coisas "rígidas":
// Sem variáveis, só é possível exibir texto fixo
std::cout << "Hello, World!" << std::endl;
Com variáveis, programas "ganham vida":
// Com variáveis, você pode lembrar a entrada do usuário
std::string name;
std::cin >> name;
std::cout << "Hello, " << name << "!" << std::endl;
2. Tipos de Dados Básicos
C++ é uma linguagem estaticamente tipada — toda variável deve ter seu tipo declarado primeiro, e o tipo não pode mudar.
(1) 2.1 Cinco Tipos de Dados Básicos
| Tipo | Palavra-chave | Tamanho | Faixa | Analogia da Vida Real |
|---|---|---|---|---|
| Inteiro | int |
4 bytes | -2.147.483.648 ~ 2.147.483.647 | Número de pessoas, idade, ano |
| Ponto flutuante | double |
8 bytes | Aprox. ±1,7 × 10³⁰⁸ | Altura, peso, preço |
| Caractere | char |
1 byte | -128 ~ 127 (ou 0 ~ 255) | Letra única, nota (A/B/C) |
| Booleano | bool |
1 byte | true ou false |
Se passou, se é adulto |
| String | string |
Variável | Qualquer comprimento | Nome, endereço, uma frase |
💡 Dica: string não é um "tipo básico" em C++, mas um tipo fornecido pela biblioteca padrão. Você precisa de #include <string> antes de usá-lo.
(2) 2.2 Declarando Variáveis
Sintaxe:
Type variableName;
Exemplo:
int age; // Declara uma variável inteira chamada age
double price; // Declara uma variável de ponto flutuante chamada price
char grade; // Declara uma variável caractere chamada grade
bool isPassed; // Declara uma variável booleana chamada isPassed
std::string name; // Declara uma variável string chamada name
(3) 2.3 Declarando e Atribuindo ao Mesmo Tempo (Inicialização)
Sintaxe:
Type variableName = value;
Exemplo:
int age = 25; // Declara age e atribui 25
double price = 19.99; // Declara price e atribui 19.99
char grade = 'A'; // Declara grade e atribui 'A' (nota: caracteres usam aspas simples)
bool isPassed = true; // Declara isPassed e atribui true
std::string name = "MOTO"; // Declara name e atribui "MOTO" (nota: strings usam aspas duplas)
💡 Dica: C++11 introduziu um estilo de inicialização mais moderno (inicialização uniforme):
int age = {25}; // Inicialização uniforme (recomendado)
double price{19.99}; // Pode omitir o sinal de igual (recomendado)
Este estilo previne conversões com perda (por exemplo, atribuir 3.14 a int causará um erro em vez de truncar silenciosamente).
3. Usando Variáveis
▶ Exemplo 1: Calcular a Área de um Círculo (Dificuldade ⭐)
#include <iostream>
int main() {
const double PI = 3.14159; // Constante (coberto mais tarde)
double radius;
std::cout << "Please enter the radius of the circle:";
std::cin >> radius;
double area = PI * radius * radius;
std::cout << "The area of the circle is:" << area << std::endl;
return 0;
}
Saída:
Please enter the radius of the circle:
The area of the circle is:
Resultado da execução:
Please enter the radius of the circle:5
The area of the circle is:78.5397
Análise do código:
const double PI = 3.14159;— Declara uma constante PI cujo valor não pode mudardouble radius;— Declara uma variável de ponto flutuante radiusstd::cin >> radius;— Lê a entrada do usuário pelo teclado e armazena em radiusdouble area = PI * radius * radius;— Calcula a área e armazena o resultado em areastd::cout << ...— Exibe o resultado
4. Regras de Nomenclatura de Variáveis
C++ tem regras rigorosas para nomes de variáveis:
(1) 4.1 Regras Obrigatórias (Deve Seguir)
| Regra | Exemplo Válido | Exemplo Inválido |
|---|---|---|
| Só pode conter letras, dígitos e sublinhados | my_age, score2 |
my-age (hífens não são permitidos) |
| Não pode começar com um dígito | age2 |
2age |
| Diferencia maiúsculas de minúsculas | age e Age são variáveis diferentes |
— |
| Não pode ser uma palavra-chave | int myInt = 5; |
int int = 5; (int é uma palavra-chave) |
Lista de Palavras-chave C++ (parcial):
int, double, char, bool, string, if, else, for, while,
return, class, public, private, new, delete, ...
(2) 4.2 Regras Recomendadas (Fortemente Recomendadas)
O compilador não impõe essas regras, mas segui-las torna seu código mais legível:
| Regra | Estilo Recomendado | Não Recomendado |
|---|---|---|
| Nomes de variáveis devem ser significativos | studentAge |
a, x1 |
| Use camelCase para nomes compostos | studentAge, totalScore |
student_age, total_score |
| Constantes devem ser ALL_CAPS | const int MAX_SIZE = 100; |
const int maxSize = 100; |
💡 Dica: Diferentes equipes podem ter convenções de nomenclatura diferentes. Este tutorial usa camelCase.
5. Constantes (const)
Alguns valores nunca devem mudar, como π, o número de dias em um ano, ou o comprimento máximo de um array.
(1) 5.1 Por Que Precisamos de Constantes?
Sem constantes (exemplo ruim):
double circumference = 3.14159 * diameter; // Este 3.14159 é um "número mágico"
double area = 3.14159 * radius * radius; // Se π estiver errado, você tem que corrigir em dois lugares
Com constantes (exemplo bom):
const double PI = 3.14159;
double circumference = PI * diameter; // Claro e fácil de mudar
double area = PI * radius * radius;
(2) 5.2 Como Declarar Constantes
Sintaxe:
const Type CONST_NAME = value;
Exemplo:
const int DAYS_PER_WEEK = 7;
const double PI = 3.14159;
const std::string SCHOOL_NAME = "Meijia Vocational College";
💡 Dica: Nomes de constantes são tipicamente ALL_CAPS com sublinhados separando palavras — esta é uma convenção de C++.
(3) 5.3 Características das Constantes
- Devem ser inicializadas (devem receber um valor quando declaradas)
const int MAX_SIZE; // ❌ Erro: constante deve ser inicializada
- Não podem ser modificadas
const int MAX_SIZE = 100;
MAX_SIZE = 200; // ❌ Erro: não pode modificar o valor de uma constante
6. Entrada e Saída (cin e cout Avançado)
(1) 6.1 Lendo Múltiplas Variáveis de Uma Vez
cin pode ler múltiplas variáveis em uma instrução, separadas por espaços ou novas linhas:
#include <iostream>
#include <string>
int main() {
int age;
std::string name;
std::cout << "Please enter your name and age(separated by spaces):";
std::cin >> name >> age; // Lê duas variáveis de uma vez
std::cout << "Hello," << name << "! You are " << age << " years old。" << std::endl;
return 0;
}
Resultado da execução:
Please enter your name and age(separated by spaces):MOTO 35
Hello,MOTO! You are 35 years old。
(2) 6.2 Misturando cin e cout
#include <iostream>
#include <string>
int main() {
std::string name;
int age;
double height;
std::cout << "Please enter your name: ";
std::cin >> name;
std::cout << "Please enter your age: ";
std::cin >> age;
std::cout << "Please enter your height (meters): ";
std::cin >> height;
std::cout << "========== Personal Info ==========" << std::endl;
std::cout << "Name: " << name << std::endl;
std::cout << "Age: " << age << " years old" << std::endl;
std::cout << "Height: " << height << " meters" << std::endl;
return 0;
}
7. Erros Comuns e Depuração
(1) 7.1 Esquecer de Inicializar uma Variável
Exemplo de erro:
#include <iostream>
int main() {
int x; // Declarou x mas não atribuiu um valor
std::cout << x << std::endl; // ❌ O valor de x é "lixo" — indefinido
return 0;
}
Abordagem correta:
int x = 0; // Inicializar ao declarar
std::cout << x << std::endl; // ✅ Exibe 0
💡 Dica: Compiladores C++ modernos irão alertar sobre o uso de variáveis não inicializadas, mas não dependa do compilador — desenvolva o bom hábito de sempre inicializar.
(2) 7.2 Incompatibilidade de Tipos
Exemplo de erro:
int age;
std::cin >> age;
// Se o usuário digitar "abc", age permanecerá inalterada (ou pior)
Abordagem correta (aprenderemos como validar entrada mais tarde):
int age;
std::cin >> age;
if (std::cin.fail()) {
std::cout << "InputError!Please enter a number." << std::endl;
}
(Este tópico será coberto em detalhes na Aula 08 — por enquanto, apenas esteja ciente do problema.)
8. Prática: Calculadora Simples
▶ Exemplo 2: Calculadora de Adição, Subtração, Multiplicação e Divisão (Dificuldade ⭐⭐)
#include <iostream>
int main() {
double num1, num2;
char op;
std::cout << "Please enter the first number: ";
std::cin >> num1;
std::cout << "Please enter an operator (+ - * /): ";
std::cin >> op;
std::cout << "Please enter the second number: ";
std::cin >> num2;
double result;
if (op == '+') {
result = num1 + num2;
} else if (op == '-') {
result = num1 - num2;
} else if (op == '*') {
result = num1 * num2;
} else if (op == '/') {
if (num2 != 0) {
result = num1 / num2;
} else {
std::cout << "Error: Divisor cannot be 0!" << std::endl;
return 1; // Saída anormal
}
} else {
std::cout << "Error: Unsupported operator!" << std::endl;
return 1;
}
std::cout << "Result: " << num1 << " " << op << " " << num2 << " = " << result << std::endl;
return 0;
}
Saída:
Please enter the first number:
Please enter an operator (+ - * /):
Please enter the second number:
Error: Divisor cannot be 0!
Error: Unsupported operator!
Result: =
Resultado da execução:
Please enter the first number: 10
Please enter an operator (+ - * /): *
Please enter the second number: 5
Result: 10 * 5 = 50
💡 Dica: Este programa usa if-else (coberto em detalhes na Aula 06) — você pode copiá-lo por enquanto e entender a abordagem geral.
❓ Perguntas Frequentes
P: Qual a diferença entre int e double? Quando usar qual? R:
intarmazena números inteiros (ex: 25, -3),doublearmazena números de ponto flutuante (ex: 19.99, 3.14). Regra prática: contagem/idade/anos →int; preço/altura/médias →double.
P: Por que char usa aspas simples e string usa aspas duplas? R:
charé um caractere único, usando aspas simples (ex:'A');stringsão múltiplos caracteres, usando aspas duplas (ex:"Hello"). Note que"A"e'A'são tipos completamente diferentes.
P: Qual a diferença entre const e #define? R:
consté uma palavra-chave C++ com verificação de tipo — mais segura e recomendada (ex:const double PI = 3.14159;).#defineé uma macro estilo C sem verificação de tipo — não recomendada.
P: Nomes de variáveis podem usar caracteres chineses? R: Teoricamente sim (C++11 suporta identificadores Unicode), mas é fortemente desencorajado — suporte entre compiladores varia e o código se torna difícil de manter. Não escreva código como
int Age = 25;.
▶ Exemplo 3: Conversão de Tipos (Dificuldade ⭐)
#include <iostream>
int main() {
int a = 5;
double b = 3.7;
// Conversão implícita
double c = a + b;
std::cout << "Implicit conversion: " << c << std::endl;
// Conversão explícita (estilo C)
int d = (int)b;
std::cout << "C-style cast: " << d << std::endl;
// Conversão estilo C++
int e = static_cast<int>(b);
std::cout << "C++-style cast: " << e << std::endl;
return 0;
}
Saída:
Implicit conversion:
C-style cast:
C++-style cast:
static_cast<T>() é o método de conversão de tipo recomendado em C++, mais seguro que o estilo C (T).
- Variáveis são "caixas" na memória usadas para armazenar dados
- C++ tem 5 tipos de dados básicos:
int,double,char,bool,string - Declarando uma variável:
Type variableName; - Inicializando uma variável:
Type variableName = value;(inicialização uniformeType variableName{value};é recomendada) - Constantes são declaradas com
const, seus valores não podem mudar, e devem ser inicializadas - Use
cinpara entrada,coutpara saída - Nomes de variáveis devem ser significativos e seguir regras de nomenclatura
📖 Resumo
- Tipos básicos: int, double, char, bool
- Conversão de tipos: static_cast, dynamic_cast
- auto: dedução automática de tipo
- const: constante, não pode ser modificada
📝 Exercícios
- Básico (Dificuldade ⭐):
Escreva um programa que declare três variáveis:
name(string),age(inteiro),score(ponto flutuante), atribua valores a cada uma e as exiba.
My name is Alice,this year 20 years old,FinalScore 92.5 points。
-
Intermediário (Dificuldade ⭐⭐): Escreva um programa que permita ao usuário inserir o raio de um círculo, depois calcule e exiba a circunferência e a área (circunferência = 2πr, área = πr²).
-
Defina π como uma constante (3.14159)
-
Exiba com 2 casas decimais (dica: use
std::fixedestd::setprecision, requer#include <iomanip>) -
Desafio (Dificuldade ⭐⭐⭐): Escreva um programa que converta Fahrenheit para Celsius:
-
Deixe o usuário inserir uma temperatura em Fahrenheit
-
Use a fórmula C = (F - 32) × 5/9 para calcular Celsius
-
Exiba o resultado (1 casa decimal)
-
Exemplo: entrada 68, saída "68°F = 20.0°C"
- Variáveis são unidades de armazenamento de dados na memória; devem ser declaradas antes do uso
- Tipos básicos de C++: int (inteiro), double (ponto flutuante), char (caractere), bool (booleano), string (string)
- Métodos de inicialização de variáveis: = atribuição / inicialização uniforme {}
- Constantes são declaradas com const; seus valores não podem ser modificados e devem ser inicializadas
- Regras de nomenclatura: letras/dígitos/sublinhados, não pode começar com dígito, diferencia maiúsculas de minúsculas
9. 🚀 Próximo Passo
Agora que você aprendeu sobre variáveis e tipos de dados, a seguir vamos aprender os operadores do C++ (Aula 04) — permitindo que variáveis realizem aritmética, comparações e julgamentos lógicos.