Em C++, constantes referem-se a valores fixos que o programa não pode alterar durante a sua execução. Esses valores imutáveis são frequentemente denominados literais. Constantes podem pertencer a qualquer tipo de dado básico, abrangendo números inteiros, números de ponto flutuante, caracteres, strings e valores booleanos.
Literais Inteiros
Um literal inteiro pode ser representado em formato decimal, octal ou hexadecimal. O sistema numérico é identificado por um prefixo:
- 0x ou 0X: Indica um valor hexadecimal.
- 0: Indica um valor octal.
- Sem prefixo: Indica um valor decimal padrão.
Além disso, sufixos podem ser aplicados para especificar o tipo: U para inteiros sem sinal (unsigned) e L para inteiros longos (long). A ordem e a capitalização desses sufixos não interferem no resultado.
75 // Decimal
0113 // Octal
0x4b // Hexadecimal
42u // Unsigned int
1000L // Long int
255ul // Unsigned long int
Literais de Ponto Fltuuante
Valores de ponto flutuante podem ser escritos em notação decimal ou científica. Na forma decimal, deve-se incluir o ponto decimal, a parte fracionária ou ambos. Na notação científica, utiliza-se e ou E para representar a potência de 10.
3.14159 // Padrão
6.022E23 // Notação científica (Exponencial)
.25 // Equivalente a 0.25
5.0f // Float (sufixo f)
Constantes Booleanas
Existem apenas dois valores booleanos em C++, definidos pelas palavras-chave reservadas:
- true: Representa uma condição verdadeira.
- false: Representa uma condição falsa.
Constantes de Caractere
Literais de caractere são delimitados por aspas simples (ex: 'a'). Se o literal for precedido por L (ex: L'x'), ele é considerado um caractere largo (wide character) e deve ser armazenado em uma variável do tipo wchar_t. Caso contrário, é um caractere comum do tipo char.
C++ suporta sequências de escape para representar caracteres especiais que possuem significados específicos dentro de strings ou saídas de console:
| Sequência | Descrição |
|---|---|
| \\ | Caractere de barra invertida |
| \' | Aspas simples |
| \" | Aspas duplas |
| \n | Nova linha (Quebra de linha) |
| \t | Tabulação horizontal |
| \b | Backspace |
#include <iostream>
int main() {
std::cout << "Primeira linha\n\tItem com tabulação" << std::endl;
return 0;
}
Literais de String
Strings são sequências de caracteres delimitadas por aspas duplas " ". Elas podem conter caracteres normais, sequências de escape e caracteres universais. Para quebrar uma string longa em várias linhas no código fonte, utiliza-se a barra invertida \ no final da linha física.
#include <iostream>
#include <string>
int main() {
std::string mensagem = "Desenvolvimento em C++";
std::string multiplas_linhas = "Esta é uma string que \
foi dividida no código fonte.";
std::cout << mensagem << "\n" << multiplas_linhas << std::endl;
return 0;
}
Métodos para Definir Constantes
Existem duas abordagens principais para definir valores constantes em um programa C++:
1. Utilizando o Pré-processador #define
A diretiva #define permite criar uma substituição de texto em tempo de pré-processamento.
#include <iostream>
#define RAIO 15
#define PI 3.14159
int main() {
double circunferencia = 2 * PI * RAIO;
std::cout << "Circunferência: " << circunferencia << std::endl;
return 0;
}
2. Utilizando a Palavra-chave const
A declaração const permite criar uma variável de um tipo específico cujo valor não pode ser alterado após a inicialização. Esta abordagem é preferível em C++ moderno por respeitar as regras de escopo e tipagem.
#include <iostream>
int main() {
const int VELOCIDADE_LUZ = 299792458;
const char UNIDADE[] = "m/s";
std::cout << "Velocidade: " << VELOCIDADE_LUZ << " " << UNIDADE << std::endl;
return 0;
}
É considerada uma boa prática de programação nomear constantes utilizando letras maiúsculas para diferenciá-las visualmente de variáveis comuns.