Variáveis e tipos C++:int, double, char, string, bool
Variáveis em C++
Uma variável C++ nos fornece um recurso de armazenamento nomeado. Ele permite que o programador manipule os dados conforme a necessidade. Cada variável tem um tipo em C++. O tipo de variável ajuda a determinar o tamanho e o layout do mapa de memória da variável, o intervalo de valores que podem ser armazenados nessa memória e o conjunto de operações que podem ser aplicadas a ela.
Neste tutorial de C++, você aprenderá:
- Variáveis em C++
- Tipos básicos de variáveis em C++
- Regras de declaração de variáveis em C++
- Tipos de dados variáveis C++
- Nome ou identificadores da variável
- Qualificador Const em C++
- Escopo de variáveis em C++
- Conversão de tipo de variável
- Registrar variáveis
- Sequências de escape
Tipos básicos de variáveis em C++
Aqui estão os tipos básicos de variáveis C++:
Int:
Um inteiro é um literal numérico (associado a números) sem qualquer parte fracionária ou exponencial. Exemplo. 120, -90, etc.
Duplo:
É um valor de ponto flutuante de precisão dupla. Exemplo:11,22, 2,345
Caracter:
Um literal de caractere é criado colocando um único caractere entre aspas simples. Por exemplo:‘a’, ‘m’, ‘F’, ‘P’, ‘}’ etc.
Flutuar:
Um literal de ponto flutuante é um literal numérico que tem uma forma fracionária ou uma forma exponencial. Por exemplo:1,3, 2,6
Literais de string:
Um literal de string é uma sequência de caracteres entre aspas duplas. Por exemplo:“Como você está?”
Bool:
Ele mantém o valor booleano true ou false.
Regras de declaração de variáveis em C++
Aqui estão algumas regras comuns para nomear uma variável:
- Um nome de variável C++ pode ter apenas letras, números e sublinhado.
- Um nome de variável C++ não pode começar com um número.
- Os nomes de variáveis não devem começar com um caractere maiúsculo.
- Um nome de variável usado em C++ não pode ser uma palavra-chave. Por exemplo, int é uma palavra-chave usada para denotar números inteiros.
- Um nome de variável C++ pode começar com um sublinhado. No entanto, isso não é considerado uma boa prática.
Tipos de dados variáveis C++
C++ define todo um conjunto de tipos primitivos
O vazio type não tem valores associados a ele e pode ser usado apenas em algumas circunstâncias. É mais comumente como o tipo de retorno de funções que não retornam um valor.
Os tipos aritméticos incluem caracteres, inteiros, valores booleanos e números de ponto flutuante. Tipo aritmético se dividido em 2 categorias
- Tipos de ponto flutuante . O float (ou tipo flutuante) representam números decimais. O padrão IEEE especifica um número mínimo de dígitos significativos. A maioria dos compiladores geralmente fornece mais precisão do que o mínimo especificado. Normalmente, floats são representados por 32 bits, doubles em 64 bits e long doubles em 96 ou 128 bits.
- Tipos integrais (que incluem caracteres, inteiros e tipos booleanos). O Booleano type tem apenas dois tipos de valores:True ou False. Existem vários caracteres tipos, a maioria dos quais existe para apoiar a internacionalização. O tipo de caractere mais básico é char. Um char tem o mesmo tamanho de um único byte de máquina, o que significa um único byte.
Os tipos integrais pode ser assinada ou não.
Tipo assinado :Eles representam números negativos ou positivos (incluindo zero). Em um tipo com sinal, o intervalo deve ser dividido igualmente entre os valores +ve e -ve. Assim, um caractere assinado de 8 bits conterá valores de –127 a 127.
Tipo não assinado :Em um tipo sem sinal, todos os valores são>=0. Um caractere sem sinal de 8 bits pode conter de 0 a 255 (ambos inclusive).
Nome ou identificadores da variável
Os identificadores podem ser compostos por algumas letras, dígitos e o caractere sublinhado ou alguma combinação deles. Nenhum limite é imposto no comprimento do nome.
Os identificadores devem
- começar com uma letra ou um sublinhado (‘_’).
- E diferenciam maiúsculas de minúsculas; letras maiúsculas e minúsculas são distintas:
// define quatro variáveis int diferentes
int guru99, gurU99, GuRu99, GURU99;
A linguagem C++ reservou alguns nomes para seu uso.
Existem muitas convenções aceitas para nomear variáveis em diferentes linguagens de programação. Seguir essas convenções pode melhorar a legibilidade do programa.
- Um identificador deve fornecer pelo menos alguma indicação de seu significado.
- Os nomes das variáveis geralmente são minúsculos — guru99, não Guru99 ou GURU99.
- As classes que definimos geralmente começam com uma letra maiúscula.
- Os identificadores que contêm várias palavras devem distinguir visualmente cada palavra. Por exemplo, guru99_website não guru99website.
Declaração e definição de variável C++
Uma declaração de uma variável torna um nome conhecido para o programa no escopo em que está definido. Exemplo:
int a=5; int b; char c='A';
int a,b; a=b=1000;
List initialization int a(5); int b{5};
Qualificador Const em C++
Suponha que haja uma variável buffsize que indica o número de entradas a serem tomadas do usuário. Aqui, não queremos alterar o valor do buffsize ao longo do programa. Queremos definir uma variável cujo valor sabemos que não deve mudar.
Nesse caso, use a palavra-chave const
const int bufSize = 512; // input buffer size
Isso define bufSize como uma constante. Qualquer tentativa de atribuir ou alterar bufSize gera um erro.
Aqui, não podemos alterar o valor de um objeto const após criá-lo, ele tem que ser obrigatoriamente declarado e inicializado. Caso contrário, o compilador lança um erro.
const int i = get_size(); // ok: initialized at run time const int j = 42; // ok: initialized at compile time const int k; // error: k is uninitialized const int i = 42; const int ci = i; // ok: the value in i is copied into ci
Escopo de variáveis em C++
Um escopo é uma extensão de um programa onde uma variável tem um significado. Principalmente o mesmo nome pode ser usado para se referir a diferentes entidades dentro de diferentes escopos. As variáveis são visíveis desde o ponto em que são declaradas até o final do escopo em que sua declaração aparece.
#include <iostream> int main() { int sum = 0; // sum values from 1 through 10 inclusive for (int val = 1; val <= 10; ++val) sum += val; // equivalent to sum = sum + val cout << "Sum of 1 to 10 inclusive is "<< sum <<endl; return 0; }
Este programa define 3 nomes, viz, main, sum e val. Ele usa o nome do namespace std, junto com dois outros nomes desse namespace — cout e endl.
- O nome da função “main” é definido fora das chaves. O nome da função main—como a maioria dos outros nomes definidos fora de uma função—tem um escopo global. O que significa que, uma vez declarados, os nomes que estão no escopo global são acessíveis em todo o programa.
- A variável soma é definida dentro do escopo do bloco que é o corpo da função principal. Ele pode ser acessado a partir de seu ponto de declaração e por todo o restante do corpo da função principal. No entanto, não fora dele. Isso significa que a soma da variável tem escopo do bloco .
- A variável val é definida no escopo de “for statement”. Ele pode ser facilmente usado nessa instrução, mas não em outro lugar na função principal. Tem escopo local .
Escopo aninhado
O escopo pode conter outros escopos. O escopo contido (ou aninhado) é chamado de escopo interno. O escopo contido é o escopo externo.
#include <iostream> using namespace std; // Program for illustration purposes only: It is bad style for a function // to use a global variable and also define a local variable with the same name int reused = 42; // reused has global scope int main() { int unique = 0; // unique has block scope // output #1: uses global reused; prints 42 0 cout << reused << " " << unique << endl; int reused = 0; // new, local object named reused hides global reused // output #2: uses local reused; prints 0 0 cout << reused << " " << unique << endl; // output #3: explicitly requests the global reused; prints 42 0 cout << ::reused << " " << unique << endl; return 0; }
Saída nº 1 aparece antes da definição local de reutilizado. Assim, esta saída
instrução é aquela que usa o nome reutilizado que está definido no escopo global. Esta declaração produz
42 0
Saída nº 2 ocorre após a definição local de reutilizado. Agora está no escopo. Portanto, esta segunda instrução de saída simplesmente usa o objeto local chamado reusado em vez de um global e gera
0 0
Saída nº 3 substitui as regras de escopo padrão usando o operador de escopo. O escopo global não tem nome. Assim, quando o operador de escopo (::) tem um lado esquerdo vazio. Ele o interpreta como uma solicitação para buscar o nome no lado direito do escopo global. Assim, a expressão usa o global reutilizado e as saídas
42 0
Conversão de tipo de variável
Uma variável de um tipo pode ser convertida em outro. É conhecido como “Conversão de Tipo”. Vamos ver as regras para converter diferentes tipos de variáveis C++:
A atribuição de não-bool a uma variável bool produz false se o valor for 0 e true caso contrário.
bool b = 42; // b is true
A atribuição de um bool a um dos outros tipos aritméticos produz 1 se o bool for verdadeiro e 0 se o bool for falso.
bool b = true; int i = b; // i has value 1
A atribuição de um valor de ponto flutuante a uma variável do tipo int produz o valor truncado. O valor que é armazenado é a parte antes do ponto decimal.
int i = 3.14; // i has value 3
A atribuição de um valor int a uma variável do tipo float faz com que a parte fracionária se torne zero. A precisão geralmente é perdida se o inteiro tiver mais bits do que a variável flutuante pode acomodar.
Int i=3; double pi = i; // pi has value 3.0
Se tentarmos atribuir um valor fora do intervalo a uma variável do tipo sem sinal, o resultado será o restante do valor %(módulo)
Por exemplo, um tipo de caractere não assinado de 8 bits pode conter valores de 0 a 255, inclusive. Atribuir um valor fora desse intervalo resultará no compilador atribuir o restante desse valor módulo 256. Portanto, pela lógica acima, a atribuição de -1 a um caractere sem sinal de 8 bits dá a esse objeto o valor 255.
unsigned char c = -1; // assuming 8-bit chars, c has value 255
Se tentarmos atribuir um valor fora do intervalo a um objeto do tipo assinado, o resultado será imprevisível. É indefinido. O programa pode parecer funcionar do lado de fora, ou pode travar, ou pode produzir valores inúteis.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined
O compilador aplica esse mesmo tipo de conversão quando usamos um valor de um tipo onde um valor de outro tipo é esperado.
int i = 42; if (i) // condition will evaluate as true i = 0;
Se este valor=0, então a condição é falsa; todos os outros valores (diferentes de zero) produzem true. Pelo mesmo conceito, quando usamos um bool em uma expressão aritmética, seu valor é sempre convertido em 0 ou 1. Como resultado, usar um bool em uma expressão aritmética é quase certamente incorreto.
Cuidado:não misture tipos assinados e não assinados
Expressões que misturam com e sem sinal podem gerar resultados surpreendentes e errados quando o valor com sinal é negativo. Conforme discutido acima, os valores assinados são automaticamente convertidos em não assinados.
Por exemplo, em uma expressão aritmética como
x* y
Se x for -1 e y for 1, e se x e y forem int, o valor será, conforme esperado, -1.
Se x é int e y não tem sinal, então o valor desta expressão depende de quantos bits um inteiro tem na máquina de compilação. Em nossa máquina, essa expressão produz 4294967295.
Registrar variáveis
As variáveis de registro são mais rápidas de acessar em comparação com as variáveis de memória. Assim, variáveis que são frequentemente usadas em um programa C++ podem ser colocadas em registradores usando register palavra-chave. A palavra-chave register diz ao compilador para armazenar a variável fornecida em um registrador. É escolha do compilador colocá-lo em um registrador ou não. Geralmente, os próprios compiladores fazem várias otimizações que incluem colocar algumas das variáveis no registro. Não há limite no número de variáveis de registro em um programa C++. Mas o compilador não pode armazenar a variável em um registrador. Isso ocorre porque a memória de registro é muito limitada e geralmente é usada pelo sistema operacional.
Definir:
register int i;
Comentários
Comentários são as partes do código ignoradas pelo compilador. Ele permite que o programador faça anotações nas áreas relevantes do código-fonte/programa. Os comentários vêm em forma de bloco ou linhas simples. Os comentários do programa são declarações explicativas. Ele pode ser incluído no código C++, o que ajuda qualquer pessoa a ler seu código-fonte. Todas as linguagens de programação permitem algum tipo de comentário. C++ oferece suporte a comentários de linha única e de várias linhas.
- Comentários de linha única são aqueles que começam com // e continuam até o final da linha. Se o último caractere em uma linha de comentário for um \, o comentário continuará na próxima linha.
- Comentários de várias linhas são aqueles que começam com /* e terminam com */.
/* This is a comment */ /* C++ comments can also * span multiple lines */
Sequências de escape
Alguns caracteres, como backspace e caracteres de controle, não possuem imagem visível. Esses caracteres são conhecidos como caracteres não imprimíveis. Outros caracteres (aspas simples e duplas, ponto de interrogação e barra invertida) têm significado especial em muitas linguagens de programação.
Nossos programas não podem usar nenhum desses caracteres diretamente. Em vez disso, podemos usar uma sequência de escape para representar esse caractere. Uma sequência de escape começa com uma barra invertida.
A linguagem de programação C++ define várias sequências de escape:
Nova linha
\n
Guia vertical
\v
Barra invertida
\\
Devolução de carro
\r
Guia horizontal
\t
Retrocesso
\b
Ponto de interrogação
\?
Formfeed
\f
Alerta (sino)
\uma
Citação dupla
\”
Citação única
\'
Usamos uma sequência de escape como se fosse um único caractere:
cout << '\n'; // prints a newline cout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newline
Também podemos escrever sequências de escape generalizadas \x seguidas por um ou mais dígitos hexadecimais. Ou usamos um \ seguido por um, dois ou três dígitos octais. A sequência de escape generalizada representa o valor numérico do caractere. Alguns exemplos (assumindo o conjunto de caracteres Latin-1):
\7 (bell) \12 (newline) \40 (blank) \0 (null) \115 ('M') \x4d ('M')
Podemos usar sequências de escape pré-definidas, pois estamos usando qualquer outro caractere.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newline cout << '\115' << '\n'; // prints M followed by a newline
Resumo
- Uma variável C++ nos fornece um recurso de armazenamento nomeado.
- Tipos de variáveis C++:int, double, char, float, string, bool, etc.
- O escopo contido (ou aninhado) é chamado de escopo interno e o escopo de conteúdo é o escopo externo.
- Uma variável de um tipo pode ser convertida em outro. É conhecido como "Conversão de tipo".
- Variáveis de registro são mais rápidas de acessar em comparação com variáveis de memória.
- Os comentários são as partes do código ignoradas pelo compilador.
- Alguns caracteres, como backspace e caracteres de controle, não têm imagem visível.
Linguagem C
- Variáveis C# e tipos de dados (primitivos)
- Variáveis, literais e constantes de C++
- Tipos de dados C++
- Variáveis C, Constantes e Literais
- Tipos de dados C
- Tipos de funções definidas pelo usuário na programação C
- Classe de armazenamento C
- Operadores em C++ com Exemplo:O que é, Tipos e Programas
- Java - Tipos de Variáveis
- C - Variáveis