English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In programmazione C++modificatori di tipoper modificare il tipo di baseTipo di datisignificato.
C++ permette di utilizzare char, int e double Posiziona il modificatore davanti al tipo di dati. Il modificatore viene utilizzato per modificare il significato del tipo di dati di base, quindi può soddisfare le esigenze di vari scenari.
Di seguito è riportato un elenco di modificatori di tipo di dati:
signed
unsigned
long
short
Modificatore signed, unsigned, long e short può essere applicato ai tipi interi,signed e unsigned può essere applicato ai tipi di carattere,long può essere applicato ai tipi a precisione doppia.
Modificatore signed e unsigned può anche essere long o short prefisso del modificatore. Ad esempio:unsigned long int.
C++ permette di utilizzare simboli di abbreviazione per dichiarareunsigned short intounsigned long int。Puoi non scrivere int, ma solo la parola unsigned, short o unsigned, long,int è implicito. Ad esempio, le seguenti due istruzioni dichiarano entrambe variabili intere unsigned.
unsigned x; unsigned int y;
Per comprendere la differenza tra i modificatori signed e unsigned degli interi in C++, eseguiamo il seguente breve programma:
#include <iostream> using namespace std; */ /* Questo programma dimostra la differenza tra interi signed e unsigned */ int main() { short int i; // Intero breve signed short unsigned int j; // Intero breve unsigned j = 50000; i = j; cout << i << " " << j; return 0; }
Quando il programma sopra viene eseguito, viene outputto il seguente risultato:
-15536 50000
Nella seguente tabella, il modello di bit dell'intero breve unsigned 50,000 è interpretato come intero breve signed -15,536.
Ecco una lista di descrizioni dei modificatori di tipo:
Tipo di dati | Dimensione | Significato |
---|---|---|
signed int | 4 byte | Utilizzato per numeri interi (equivalente a int) |
unsigned int | 4 byte | Può memorizzare solo interi non negativi |
short | 2 byte | Utilizzato per numeri interi piccoli (intervallo-32768 a 32767) |
long | Almeno 4 byte | Utilizzato per numeri interi grandi (uguale a long int) |
unsigned long | 4 byte | Utilizzato per grandi numeri interi o 0 (uguale a unsigned long int) |
long long | 8 byte | usato per interi molto grandi (uguale a long long int). |
unsigned long long | 8 byte | usato per interi positivi molto grandi o zero (uguale a unsigned long long int) |
long double | 8 byte | usato per i floating point grandi |
signed char | 1 byte | usato per i caratteri (garantito rangeda -127 a 127) |
unsigned char | 1 byte | usato per i caratteri (rangeda 0 a 255) |
possiamo usare il modificatore shortnumero intero piccolo(range -32,767 a +32,767).
Ad esempio:
// numero intero piccolo short a = 12345;
qui, a è una variabile intero short.
Attenzione: short è equivalente a short int.
se dobbiamo memorizzare unnumero intero grande(range -2147483647 a 2147483647), allora può essere utilizzato il modificatore long. Ad esempio:
// numero intero grande long b = 123456;
Attenzione: long è equivalente a long int.
Il modificatore long può essere utilizzato anche con variabili double.
// numero floating point grande long double c = 0.333333333333333333L;
Attenzione:Per rappresentare long double, usiamo il suffisso L. Se non utilizziamo il suffisso L, double viene convertito in long double (può causare la perdita dei dati).
long può essere ripetuto due volte per creare il tipo long long. Questo tipo è utilizzato per numeri più grandi di long. Il modificatore long long può essere utilizzato solo con int.
Ad esempio:
// long long int long long num = 12345678;
le variabili con segno (signed) possono conteneree positivointeroe negativointero, inclusizero. Ad esempio:
// valore intero positivo signed int x = 23; // valore intero negativo signed int y = -13; // valore zero intero signed int z = 0;
qui,
x mantiene unvalore positivointero
y mantiene unvalore negativointero
z mantienevalore zerointero
variabile unsigned(unsigned) può contenere solo interi non negativi. Ad esempio:
// intero positivo unsigned int x = 2; unsigned int y = 0;
qui,
x mantiene un intero positivo
y mantiene zero
Di solito, la variabile int può memorizzare un intervallo di da -2,147,483,648 a 2,147,483,647 valore. Mentre la variabile unsigned int può memorizzare un intervallo di da 0 a 4,294,967,295 valore.
C ++ ha 3 tipi di char diversi: char, signed char e unsigned char. In realtà, ci sono solo due tipi: signed char e unsigned char.
Questo è perché anche se char e signed char o unsigned char non sono identici in C ++ standard, diversi compilatori li considerano come signed char o unsigned char a seconda delle loro preferenze.
Attenzione:Quando si utilizza solo char invece di signed char o unsigned char, questo tipo viene chiamatoplain char (caratteri normali).
Probabilmente avete capito, signed char può memorizzare interi positivi e negativi, mentre unsigned char può memorizzare solo interi positivi (inclusi0).
l'intervallo garantito per i valori interi che possono essere memorizzati da signed char èda -127 a 127, mentre l'intervallo di unsigned char èda 0 a 255.
// Caratteri normali char plain_1 = 65; char plain_2 = 0; // Caratteri normali con valore negativo // Potrebbe causare problemi a certi compilatori 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;
qui,
plain_1 contiene un intero positivo
plain_2 contiene un intero a zero
sin_1 contiene un intero positivo
sin_2 contiene un intero a zero
sin_3 contiene un intero negativo
unsin_1 contiene un intero negativo
unsin_2 contiene un intero a zero
Attenzione: è meglio non utilizzare caratteri normali per eseguire operazioni numeriche; utilizzare signed char o unsigned char al loro posto. I caratteri puri dovrebbero essere utilizzati solo per memorizzare valori di carattere.
I specificatori di tipo forniscono informazioni aggiuntive sulle variabili.
Specificatore | Significato |
---|---|
const | const Gli oggetti di tipo non possono essere modificati o modificati durante l'esecuzione del programma. |
volatile | Modificatore volatile Informare il compilatore che non è necessario ottimizzare le variabili dichiarate come volatile, in modo che il programma possa leggere direttamente la variabile dalla memoria. Per le variabili generali, il compilatore esegue l'ottimizzazione, mettendo il valore della variabile nella memoria del registro per accelerare l'efficienza di lettura e scrittura. |
restrict | Da restrict Il puntatore decorato è l'unico modo per accedere all'oggetto a cui punta. Solo C99 ha aggiunto il nuovo tipo di specificatore restrict. |