English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Tipos de modificadores ++em Cna programação,Modificadores de tipo de dadosTipo de dadoso tipo de dados.
C++ Permite alterar o significado de char, int e double Colocar modificadores antes do tipo de dados. Os modificadores são usados para alterar o significado do tipo básico, então eles podem atender a várias situações.
A seguir está listado os modificadores de tipo de dados:
signed
unsigned
long
short
Modificador signed, unsigned, long e short pode ser aplicado ao tipo inteiro,signed e unsigned pode ser aplicado ao tipo caractere,long pode ser aplicado ao tipo double.
Modificador signed e unsigned Também pode ser long ou short o prefixo do modificador. Por exemplo:unsigned long int.
C++ Permite usar símbolos abreviados para declararinteiro curto não assinadoouLongo inteiro unsigned. Você pode omitir int, apenas escrever a palavra unsigned, short ou unsigned, longint é implícito. Por exemplo, as duas seguintes sentenças declaram variáveis inteiras unsigned.
unsigned x; unsigned int y;
Para entender o C++ Explicamos a diferença entre os modificadores de inteiros assinados e não assinados, vamos executar o seguinte programa curto:
#include <iostream> using namespace std; /* * Este programa demonstra a diferença entre inteiros assinados e não assinados */ int main() { short int i; // inteiro curto assinado short unsigned int j; // inteiro curto não assinado j = 50000; i = j; cout << i << " " << j; return 0; }
Quando o programa acima é executado, ele produz os seguintes resultados:
-15536 50000
No resultado acima, o inteiro curto não assinado 5O padrão de bits de 0,000 é interpretado como um inteiro curto assinado -15,536.
Esta é uma lista de descrições de modificadores de tipo:
Tipo de dados | tamanho | Significado |
---|---|---|
signed int | 4 bytes | para inteiros (equivalente a int) |
unsigned int | 4 bytes | pode armazenar apenas inteiros não negativos |
short | 2 bytes | para números inteiros pequenos (range-32768até32767) |
long | pelo menos4bytes | para números inteiros grandes (igual a long int) |
unsigned long | 4 bytes | para números inteiros positivos grandes ou 0 (igual a unsigned long int) |
long long | 8 bytes | para números inteiros muito grandes (igual a long long int). |
unsigned long long | 8 bytes | para números inteiros positivos muito grandes ou 0 (igual a unsigned long long int) |
long double | 8bytes | para números de ponto flutuante grandes |
signed char | 1 bytes | para caracteres (garante o range-127até127) |
unsigned char | 1 bytes | para caracteres (rangeDe 0 a255) |
Podemos usar o modificador short deNúmeros inteiros pequenos(range -32,767até+32,767).
por exemplo,
// Números inteiros pequenos short a = 12345;
Aqui, a é uma variável inteira short.
Atenção: short é equivalente a short int.
Se precisarmos armazenar umNúmeros inteiros grandes(range)-2147483647até2147483647Se um valor for maior que
// Números inteiros grandes long b = 123456;
Atenção: long é equivalente a long int.
O modificador long pode ser usado também com variáveis double.
// Números de ponto flutuante grandes long double c = 0.333333333333333333L;
Atenção:Para representar long double, usamos o sufixo L. Se não usarmos o sufixo L, o double é convertido para o valor long double (o que pode resultar na perda de dados).
long long pode ser repetido duas vezes para criar o tipo long long. Este tipo é usado para números maiores que long. O modificador long long pode ser usado apenas com int.
por exemplo,
// long long int long long num = 12345678;
Os variáveis assinadas (signed) podem contere positivointeiroe negativointeiro, incluindozero. Por exemplo,
// valor inteiro positivo signed int x = 23; // valor inteiro negativo signed int y = -13; // inteiro de zero signed int z = 0;
Aqui,
x mantém umpositivointeiro
y mantém umnegativointeiro
z mantémzerointeiro
Variável sem sinal(unsigned)pode conter apenas inteiros não negativos. Por exemplo,
// inteiro positivo unsigned int x = 2; unsigned int y = 0;
Aqui,
x mantém um inteiro positivo
y mantém zero
Normalmente, a variável int pode armazenar um escopo de -2,147,483,648 até 2,147,483,647 Os valores. Enquanto isso, a variável unsigned int pode armazenar um escopo de 0 até 4,294,967,295 Os valores.
C ++Existem3Diferentes tipos de char: char, signed char e unsigned char. Na verdade, há basicamente dois tipos: signed char e unsigned char.
Isso é porque, mesmo que char com o padrão C ++Os signed char ou unsigned char dentro de não são os mesmos, e diferentes compiladores também podem ver char como signed char ou unsigned char conforme seu gosto.
Atenção:Quando usamos apenas char em vez de signed char ou unsigned char, esse tipo é chamadochar normal (caracter normal).
Você já deve ter percebido, signed char pode armazenar inteiros positivos e negativos, enquanto unsigned char pode armazenar apenas inteiros positivos (incluso0).
O escopo garantido para valores inteiros que podem ser armazenados por signed char é-127até127e o escopo de unsigned char éDe 0 a255.
// Caracteres normais char plain_1 = 65; char plain_2 = 0; // Caracteres normais com valor negativo // Pode causar problemas em alguns compiladores char plain_3 = -56; // signed char signed char sin_1 = 12; signed char sin_2 = 0; signed char sin_3 = -12; // unsigned char unsigned char unsin_1 = -85; unsigned char unsin_2 = 0;
Aqui,
plain_1 Possui um inteiro positivo
plain_2 Possui valor inteiro zero
sin_1 Possui um inteiro positivo
sin_2 Possui valor inteiro zero
sin_3 Possui um inteiro negativo
unsin_1 Possui um inteiro negativo
unsin_2 Possui valor inteiro zero
Atenção: é melhor não usar caracteres normais para operações numéricas; deve-se usar signed char ou unsigned char. Os caracteres puros devem ser usados apenas para armazenar valores de caracteres.
O limitador de tipo fornece informações adicionais sobre a variável.
Limitador | Significado |
---|---|
const | const Os objetos do tipo não podem ser modificados durante a execução do programa. |
volatile | Modificador volatile diz ao compilador que não precisa otimizar a variável declarada como volatile, permitindo que o programa leia diretamente a variável da memória. Para variáveis gerais, o compilador realiza otimização, colocando o valor da variável na pilha para acelerar a eficiência de leitura e escrita. |
restrict | por restrict O ponteiro modificado é o único método de acesso ao objeto que ele aponta. Apenas C99 Adicionou o novo tipo de limitador restrict. |