English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Corso di base C++

Controllo di flusso C++

Funzione C++

Array & Stringhe C++

Strutture dati C++

Classi & Oggetti C++

Puntatore C++

Ereditarietà C++

Corso di STL C++

Manuale di riferimento C++

Tipi di modificatori C++

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 datiDimensioneSignificato
signed int4 byte
Utilizzato per numeri interi (equivalente a int)
unsigned int4 bytePuò memorizzare solo interi non negativi
short2 byteUtilizzato per numeri interi piccoli (intervallo-32768 a 32767)
longAlmeno 4 byteUtilizzato per numeri interi grandi (uguale a long int)
unsigned long4 byteUtilizzato per grandi numeri interi o 0 (uguale a unsigned long int)
long long8 byteusato per interi molto grandi (uguale a long long int).
unsigned long long8 byteusato per interi positivi molto grandi o zero (uguale a unsigned long long int)
long double8 byteusato per i floating point grandi
signed char1 byteusato per i caratteri (garantito rangeda -127 a 127)
unsigned char1 byteusato per i caratteri (rangeda 0 a 255)

modificatore short

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.

modificatore long

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 long

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;

modificatori signed e unsigned

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.

Consegna (signed), senza segno (unsigned) e carattere normale (plain char)

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.

Specificatori di tipo in C++

I specificatori di tipo forniscono informazioni aggiuntive sulle variabili.

SpecificatoreSignificato
constconst Gli oggetti di tipo non possono essere modificati o modificati durante l'esecuzione del programma.
volatileModificatore 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.
restrictDa restrict Il puntatore decorato è l'unico modo per accedere all'oggetto a cui punta. Solo C99 ha aggiunto il nuovo tipo di specificatore restrict.