Para escrever nossos programas em C++, precisamos saber como declarar variáveis e constantes que vão armazenar os dados processados. Nesta parte do tutorial, vamos aprender o básico variáveis e constantes.

Os conceitos básicos também foram discutido em Portugol: Variáveis sendo a leitura recomendada.

As variáveis em C++ são declaradas como na sintaxe abaixo. Todos os tipos de dados primitivos e fornecidos para biblioteca padrão podem ser utilizados.

Sintaxe
tipo_de_dado nome_variavel; //não iniciada
Exemplo 1
#include <iostrean>
int main(void)
{
    char sexo;
    int idade;

    return 0
}
Saída
-

A linguagem C++ permite que essa declaração seja feita em apenas uma linha. A sintaxe é semelhante ao que foi visto no exemplo acima. Nesse tipo de declaração os nomes das variáveis são separados por ",".

Sintaxe
tipo_de_dado nome_variavel1, nome_variavel2, nome_variavelN;
Exemplo 2
#include <iostream>
int main(void)
{
    int numero, idade, ano, mes;

    return 0;
}

A atribuição de valor a uma variáveis é feita utilizando o operador (=). Essa atribuição pode ser em linha ou não.

Sintaxe: declaração em linha
tipo_de_dado nome_variavel1 = valor;

tipo_de_dado nome_variavel1 = valor1, nome_variavel2 = valor2, nome_variavelN = valorN;
Exemplo 3
#include <iostream>
int main(void)
{
    int valor = 1;
    int numero = 100, idade = 100, ano = 2023, mes= 05;

    return 0;
}
Saída
-

As constantes têm seu conteúdo preservado durante toda a execução de nossos programas. Tanto a declaração quanto a atribuição são semelhantes ao que foi visto em variáveis.

As diferenças entre variável e constante estão na atribuição, que no caso da constante deve ser feita no momento da declaração e o uso da palavra reservada const.

Sintaxe
const tipo_de_dado nome_constante = valor;
Exemplo 4
#include <iostream>

const int CONSTANTE=10;

int main(void)
{
    //uso de CONSTANTE

    for(/*omitido*/)
    {
        //uso de CONSTANTE
    }

    return 0;
}
Saída
-

Assim como variáveis, C++ permite que essa declaração de constante seja feita em apenas uma linha. A sintaxe é semelhante ao que foi visto no exemplo acima. Nesse tipo de declaração os nomes das constantes e suas atribuições são separados por ",".

Sintaxe
 const tipo_dado nome_constante1 = valor1, nome_constante1 = valor2, nome_constante1 = valorN;
Exemplo 5
#include <iostream>

const int CONSTANTE1=10,CONSTANTE2=10,CONSTANTE3=10;

int main(void)
{
    //omitido

    return 0;
}

Uma vez declarada uma constante como no exemplo, qualquer atribuição de valor posterior a sua declaração irá gerar um erro de compilação:

Exemplo 6
#include <iostream>

const int CONSTANTE=10;

int main(void)
{
    CONSTANTE = 11;

    return 0;
}
Saída
error: assignment of read-only variable ‘CONSTANTE’.

Por boa prática, as constantes são declaradas em caixa alta utilizando a convensão Snake Case para se diferenciar das variáveis.

A linguagem C++ é case-sensitive. Quando declaramos identificadores homônimos em caixa alta e caixa baixa, esses são vistos como identificadores distintos.

No exemplo abaixo, declaramos duas funções e variáveis com um mesmo nome em caixa alta e baixa.

Exemplo 4
#include <iostream>
using namespace std;

void funcao(){}
void FUNCAO(){}

int main()
{
   int ano = 10;
   int ANO = 10;
   
   cout << ano << endl;
   cout << ANO << endl;
   
   funcao();
   FUNCAO();
}
Saída
10
10                   

Usando a palavra reservada auto na declaração de variáveis, informamos que essas terão seus tipos de dados definidos durante a compilação usando inferência. O valor inicial atribuído será usado como base para a escolha do tipo.

Sintaxe
auto nome_variavel = <valor>;

A palavra auto pode ser usada apenas quando a variável for iniciada. Uma vez que seu tipo tenha sido inferido, não será alterado por uma atribuição posterior.

Exemplo 5
#include <iostream>
using namespace std;

int main()
{

    auto val1= string("c++"); // std::string
    auto val2= 5; // int
    auto val3= 5.99; // double
    auto val4= 'Z'; // char
    auto val5= true; // bool
}
Saída
-

Caso seja necessário descobrir o tipo de dado de um variável declarada como auto, C++ fornece o operador typeid que retorna informações sobre tipo de dado de uma variável ou expressão.

Sintaxe
type_info& typeid(<nome_variavel>);
type_info& typeid(<expressao>);

O método name de type_info é invocado para retornar uma string(char*) contendo o nome do tipo do dado. Esse retorno depende do compilador.

Sintaxe
const char* name() const;
Retorno
i: int
d: double
f: float
c: char
Px: ponteiro. x : i,d,f,d,c
PPx:  ponteiro para ponteiro. x : i,d,f,d,c

No exemplo a seguir, variáveis recebem valores iniciais de diferentes tipos de dados para exemplificar o uso de typeid e método name.

Exemplo 6
#include <iostream>
using namespace std;

int main()
{
    auto val= 5; // int
    auto vfloat= 1.99f; // float
    auto vchar= 'Z'; // char
    auto vdouble= 7.77; // double
    auto vbool= true; // bool
    auto pnt = &val;

    cout << typeid(val).name() << endl;
    cout << typeid(vfloat).name() << endl;
    cout << typeid(vchar).name() << endl;
    cout << typeid(vbool).name() << endl;
    cout << typeid(pnt).name() << endl;
}
Saída
i
f
c
b
Pi

O sizeof é um operador que retorna a quantidade de bytes utilizados em memória para armazenamento de uma variável, array, string, outros tipos nativos ou definidos pelo usuário.

Sintaxe
sizeof(nome_variavel);
Exemplo 7
#include <iostream>
using namespace std;

int main() 
{
    int var;
    short varb;
    long int varc;
    float vard;
    double vare;
    int vetor[10];
    char string[] = "uma string em C++"; // + '\0'

    cout << sizeof(var)) << endl;
    cout << sizeof(varb))<< endl;
    cout << sizeof(varc))<< endl;
    cout << sizeof(vard))<< endl;
    cout << sizeof(vare))<< endl;
    cout << sizeof(vetor))<< endl;
    cout << sizeof(string))<< endl;

    return 0;
}
Saída
4
2
8
4
8
40
18

Para a declaração de variáveis e constantes na linguagem C++, precisamos entender como funcionam os escopos locais e globais e como funciona seus acessos à variáveis e constantes.

Para C++, quando declaramos uma função, as variáveis declaradas dentro de uma função é considerada uma variável local tendo seu contéudo descartado ao términa da execução da função.

Exemplo 8
#include <stdio.h>
void main(void)
{
    int valor1; //local

    for(/*omitido*/)
    {
        int valor2; //local
    }
}
Saída
-

No exemplo cima, as váriváeis valor1 e valor2 são variáveis locais pois estão declaradas dentros das funções main e comando for. O acesso a essas variáveis só pode ser feito no escopo onde foram criadas.

Variáveis que são declaradas fora da função main, por exemplo, são variáveis globais. Da mesma forma, variáveis e constantes criadas em arquivos .h também são globais.

As varíaveis declaradas nesse escopo global, permanecem "vivas" durante todo tempo de execução de nossos programas.

Exemplo 9
#include <stdio.h>

int valor;
const int CONSTANTE=10;

void main(void)
{
    //uso de valor
    //uso de CONSTANTE

    for(/*omitido*/)
    {
        //uso de CONSTANTE
        //uso de valor
    }
}
Saída
-

No exemplo cima, a váriváei valor1 é uma variáveis global pois está declarada fora da função main. O mesmo é válido para a constante CONSTANTE.

Para dar nomes identificadores(variáveis, constantes e etc), podemos utilizar as convensões Pascal, Snake ou Camel Case.

Exemplo 9

nomeVariavel : Camel Case
NomeVariavel : Pascal Case
nome_variavel : Snake Case

As convensões Pascal, Snake e Camel Case já foram explicadas em Portugol: Convensões no tutorial da linguagem Portugol e a leitura é recomendada.

Além da convensão, a linguagem C++ utiliza as seguintes regras que são suportadas para dar a identificadores como variáveis, constantes, macros, funções e outros:

  1. Não deve conter espaço;
  2. Não deve iniciar com números;
  3. Não deve conter caracteres especiais, exceto underscore (_);
  4. Não utilizar palavras reservadas;
Exemplo 10

Nomes de identificadores incorretos

int 1idade;
int idade pessoa;
int int; // palavra reservada;
int #idade;
Exemplo 11: Nomes de identificadores corretos
int idade;
int idade_pessoa;
int _idade;

Não é recomendado o uso de palavras reservadas como nome de identificadores. Caso mesmo assim,seja necessário o uso, utilizar caracteres como (_) ou ($) em frente ao nome do identificador.

Exemplo 12: Identificadores usando palavras reservadas
int $int;
int $float;
int $enum;

Agora que já temos conhecimento sobre os tipos básicos de dados presentes na linguagem C++, vamos ver alguns exemplos de declarações de variáveis com os tipos vistos em C++ Básico: Tipos de Dados.

Exemplo 13
#include 

int main()
{
    float vfloat = 1.99F; //F = float
    int vint = 777;
    char *str1 = "uma string em c++";
    char[] str2 = {'u','m','a',' ','s','t','r','i','n','g'};
    bool flag = false;
    char codigo = 10;
    char caracter = 'Z';
    char hex = 0xff;
    int vetor[] = {1,2,3};
    int matriz[][] = {{1,2},{3,4}};

    return 0;
}

Exemplos de declaração de enumeradores, unions e structs podem ser vistos em suas respectivas seções C++ Básico: Enum, C++ Básico: Struct e C++ Básico: Union.

Outros tipos de dados complexos, como classes e coleções serão vistos em C++ P.O.O e C++ Coleções.

A linguagem C++, assim como todas as linguagens de programação, têm um conjunto de palavras reservadas que possuem um significado único e não podem ser utilizadas em identificadores.

asm double new swicht
auto else operator template
break enum private this
case extern protected throw
catch float public try
char for register typedef
class friend return union
const goto short unsigned
continue if signed virtual
default inline sizeof void
delete int static volatile
do long struct while

Algumas palavras reservadas não serão abordadas neste tutorial básico sobre C++ sendo mencionadas em futuras atualizações.

  1. 19/11/2025 - revisão 5 - Adição: case-sensitive, inferência, typeid e sizeof
  2. 28/07/2025 - revisão 4 - Adiçao/Correção em links internos; descriçao de algumas seções, exemplo 12; Ajustes em sintaxes
  3. 30/09/2024 - revisão 3 - Correção: 'constantes', 'escopo local', link 'portugol'; ajustes pontuais
  4. 30/08/2024 - revisão 2 - Correção em links de objetivos
  5. 09/02/2024 - revisão 1 - Correção em navegação, css, exemplos de constantes e erros gramaticais
  6. 30/06/2023 - versão inicial