Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

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á:

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:

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
  1. 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.
  2. 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

// 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.


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.

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.
/* 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:
O que ele faz? Personagem
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


Linguagem C

  1. Variáveis ​​C# e tipos de dados (primitivos)
  2. Variáveis, literais e constantes de C++
  3. Tipos de dados C++
  4. Variáveis ​​C, Constantes e Literais
  5. Tipos de dados C
  6. Tipos de funções definidas pelo usuário na programação C
  7. Classe de armazenamento C
  8. Operadores em C++ com Exemplo:O que é, Tipos e Programas
  9. Java - Tipos de Variáveis
  10. C - Variáveis