Variáveis ​​e tipos de C ++: int, double, char, string, bool

Índice:

Anonim

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, a faixa de valores que podem ser armazenados nessa memória e o conjunto de operações que podem ser aplicadas a ela.

Neste tutorial 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 nenhuma parte fracionária ou exponencial. Exemplo. 120, -90, etc.

Dobro:

É um valor de ponto flutuante de precisão dupla. Exemplo: 11,22, 2,345

Caracteres:

Um literal de caractere é criado colocando um único caractere entre aspas simples. Por exemplo: 'a', 'm', 'F', 'P', '}' etc.

Flutuador:

Um literal de ponto flutuante é um literal numérico que possui uma forma fracionária ou expoente. Por exemplo: 1,3, 2,6

Literais de string:

Um literal de string é uma sequência de caracteres entre aspas duplas. Por exemplo: "Como vai você?"

Bool:

Ele mantém o valor booleano verdadeiro ou falso.

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 ++ só pode ter letras, números e sublinhado.
  • Um nome de variável C ++ não pode começar com um número.
  • Os nomes das 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 inteiros.
  • Um nome de variável C ++ pode começar com um sublinhado. No entanto, não é considerada uma boa prática.

Tipos de dados variáveis ​​C ++

C ++ define todo um conjunto de tipos primitivos

O tipo void não tem valores associados 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

  1. Tipos de vírgula flutuante . O float (ou tipo flutuante) representa 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, os floats são representados por 32 bits, dobra em 64 bits e dobra longa em 96 ou 128 bits.
  2. Tipos integrais (que incluem tipos de caracteres, inteiros e booleanos). O tipo booleano possui apenas dois tipos de valores: True ou False. Existem vários tipos de char , a maioria dos quais existe para oferecer suporte à internacionalização. O tipo de caractere mais básico é char. Um char tem o mesmo tamanho que um único byte de máquina, o que significa um único byte.

Os tipos integrais podem ser assinados ou não.

Tipo com sinal : 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 char assinado de 8 bits conterá valores de -127 a 127.

Tipo sem sinal: 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 inclusivos).

Nome ou identificadores da variável

Os identificadores podem ser compostos de algumas letras, dígitos e o caractere de sublinhado ou alguma combinação deles. Nenhum limite é imposto ao comprimento do nome.

Identificadores devem

  • comece com uma letra ou um sublinhado ('_').
  • E são sensíveis a maiúsculas e 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 ​​são geralmente 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 ++

A 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 initializationint a(5);int b{5};

Qualificador Const em C ++

Suponha que haja uma variável buffsize que declara o número de entradas a serem obtidas do usuário. Aqui, não queremos alterar o valor de buffsize em todo o 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 dá um erro.

Aqui, não podemos alterar o valor de um objeto const depois de criá-lo, ele deve ser declarado e inicializado obrigatoriamente. Caso contrário, o compilador gera um erro.

const int i = get_size(); // ok: initialized at run timeconst int j = 42; // ok: initialized at compile timeconst int k; // error: k is uninitialized constint 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 em que uma variável tem um significado. Geralmente, o mesmo nome pode ser usado para se referir a diferentes entidades em diferentes escopos. As variáveis ​​são visíveis do ponto em que são declaradas até o final do escopo em que sua declaração aparece.

#include int main(){int sum = 0;// sum values from 1 through 10 inclusivefor (int val = 1; val <= 10; ++val)sum += val; // equivalent to sum = sum + valcout << "Sum of 1 to 10 inclusive is "<< sum <

Este programa define 3 nomes, viz, main, sum e val. Ele usa o nome de namespace std, junto com dois outros nomes desse namespace-cout e endl.

  • O nome da função "principal" é definido fora das chaves. O nome da função principal - 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 no âmbito do bloco que é o corpo da função principal. Ele pode ser acessado de seu ponto de declaração e em todo o resto do corpo da função principal. No entanto, não fora disso. Isso significa que a variável sum tem escopo de 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 abrangência local .

Âmbito Aninhado

O escopo pode conter outros escopos. O escopo contido (ou aninhado) é conhecido como escopo interno. O escopo contido é o escopo externo.

#include 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 nameint reused = 42; // reused has global scopeint main(){int unique = 0; // unique has block scope// output #1: uses global reused; prints 42 0cout << reused << " " << unique << endl;int reused = 0; // new, local object named reused hides global reused// output #2: uses local reused; prints 0 0cout << reused << " " << unique << endl;// output #3: explicitly requests the global reused; prints 42 0cout << ::reused << " " << unique << endl;return 0;}

A saída nº 1 aparece antes da definição local de reutilizado. Portanto, esta saída

declaração é aquela que usa o nome reutilizado que é definido no escopo global. Esta declaração resulta

42 0

A saída # 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 denominado reutilizado em vez de global e produz

0 0

A 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 produz

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 resulta em falso se o valor for 0 e verdadeiro em caso contrário.

bool b = 42; // b is true

A atribuição de um bool a um dos outros tipos aritméticos resulta em 1 se o bool for verdadeiro e 0 se o bool for falso.

bool b = true;int i = b; // i has value 1

Atribuir um valor de ponto flutuante a uma variável do tipo int produz o valor que é truncado. O valor armazenado é a parte antes da vírgula decimal.

int i = 3.14; // i has value 3

A atribuição de um valor interno a uma variável do tipo flutuante resulta na parte fracionária se tornando 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 é o restante do valor% (módulo)

Por exemplo, um tipo de char sem sinal de 8 bits pode conter valores de 0 a 255, inclusive. Atribuir um valor fora desse intervalo resultará no compilador atribuindo o restante desse valor módulo 256. Portanto, pela lógica acima, a atribuição de -1 a um char 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 de tipo assinado, o resultado será imprevisível. É indefinido. O programa pode parecer funcionar externamente, pode travar ou produzir valores de lixo.

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 truei = 0;

Se este valor = 0, a condição é falsa; todos os outros valores (diferentes de zero) resultam em verdadeiros. 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 sempre incorreto.

Cuidado: não misture tipos com e sem sinal

Expressões que combinam com e sem sinal podem gerar resultados surpreendentes e errados quando o valor com sinal é negativo. Conforme discutido acima, os valores com sinal são automaticamente convertidos em sem sinal.

Por exemplo, em uma expressão aritmética como

x* y

Se x for -1 ey for 1, e se xey forem inteiros, o valor será, como esperado, -1.

Se x for inteiro e y não tiver sinal, o valor dessa expressão dependerá 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 registros são mais rápidas de acessar em comparação com as variáveis ​​de memória. Assim, variáveis ​​que são freqüentemente usadas em um programa C ++ podem ser colocadas em registros usando a palavra-chave register . A palavra-chave register diz ao compilador para armazenar a variável fornecida em um registro. É a escolha do compilador colocá-lo em um registro 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 para o número de variáveis ​​de registro em um programa C ++. Mas o compilador não pode armazenar a variável em um registro. Isso ocorre porque a memória de registro é muito limitada e geralmente é usada pelo sistema operacional.

Definir:

register int i;

Comentários

Os 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 em 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 alguma forma de comentários. C ++ oferece suporte a comentários de uma ou 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 têm 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 um significado especial nas muitas linguagens de programação.

Nossos programas não podem usar nenhum desses personagens diretamente. Em vez disso, podemos usar uma sequência de escape para representar esse char. Uma sequência de escape começa com uma barra invertida.

A linguagem de programação C ++ define várias sequências de escape:

O que isso faz?

Personagem

Nova linha

\ n

Guia vertical

\ v

Barra invertida

\\

Retorno de carruagem

\ r

Aba horizontal

\ t

Backspace

\ 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 newlinecout << "\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, ou 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 predefinidas, como estamos usando qualquer outro caractere.

cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\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) é referido como um escopo interno e o escopo contido é o escopo externo.
  • Uma variável de um tipo pode ser convertida em outro. É conhecido como "Conversão de tipo".
  • As variáveis ​​de registros são mais rápidas de acessar em comparação com as 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.