Tipi predefiniti (C++)
I tipi predefiniti (detti anche tipi fondamentali) vengono specificati dallo standard del linguaggio C++ e sono incorporati nel compilatore. I tipi predefiniti non sono definiti in alcun file di intestazione. I tipi predefiniti sono suddivisi in tre categorie principali: integrale, a virgola mobile e void. I tipi integrali rappresentano numeri interi. I tipi a virgola mobile possono specificare valori che possono avere parti frazionarie. La maggior parte dei tipi predefiniti viene considerata come tipi distinti dal compilatore. Tuttavia, alcuni tipi sono sinonimi o considerati come tipi equivalenti dal compilatore.
Tipo void
Il void
tipo descrive un set vuoto di valori. Non è possibile specificare alcuna variabile di tipo void
. Il void
tipo viene usato principalmente per dichiarare funzioni che non restituiscono valori o per dichiarare puntatori generici a dati non tipizzati o tipizzati in modo arbitrario. Qualsiasi espressione può essere convertita in modo esplicito o può esserne eseguito il cast al tipo void
. Tuttavia, l'uso di tali espressioni è limitato ai seguenti elementi:
L'istruzione di un'espressione Per altre informazioni, vedere Espressioni.
L'operando sinistro dell'operatore virgola Per altre informazioni, vedere Operatore virgola.
Il secondo o il terzo operando dell'operatore condizionale (
? :
) Per altre informazioni, vedere Espressioni con l'operatore condizionale.
std::nullptr_t
La parola chiave nullptr
è una costante del puntatore Null di tipo std::nullptr_t
, che è convertibile in qualsiasi tipo di puntatore non elaborato. Per ulteriori informazioni, vedere nullptr
.
Tipi booleani
Il bool
tipo può avere valori true
e false
. Le dimensioni del bool
tipo sono specifiche dell'implementazione. Per informazioni dettagliate sull'implementazione specifiche di Microsoft, vedere Dimensioni dei tipi predefiniti.
Tipi di caratteri
Il char
tipo è un tipo di rappresentazione di caratteri che codifica in modo efficiente i membri del set di caratteri di esecuzione di base. Il compilatore C++ considera le variabili di tipo char
, signed char
e unsigned char
come se avessero tipi differenti.
Specifico di Microsoft: le variabili di tipo char
vengono alzate di livello come int
se dal tipo per signed char
impostazione predefinita, a meno che non venga usata l'opzione /J
di compilazione. In questo caso, vengono considerati come tipo unsigned char
e vengono promossi a int
senza estensione del segno.
Una variabile di tipo è un tipo wchar_t
di carattere wide o multibyte. Usare il prefisso prima di L
un carattere o un valore letterale stringa per specificare il tipo di caratteri wide.
Specifico di Microsoft: per impostazione predefinita, wchar_t
è un tipo nativo, ma è possibile usare /Zc:wchar_t-
per impostare wchar_t
un typedef per unsigned short
. Il tipo __wchar_t
è un sinonimo specifico di Microsoft per il tipo wchar_t
nativo.
Il char8_t
tipo viene usato per la rappresentazione di caratteri UTF-8. Ha la stessa rappresentazione di unsigned char
, ma viene considerata come un tipo distinto dal compilatore. Il char8_t
tipo è nuovo in C++20. Specifico di Microsoft: l'uso di richiede l'opzione del char8_t
/std:c++20
compilatore o versioni successive (ad esempio /std:c++latest
).
Il char16_t
tipo viene usato per la rappresentazione di caratteri UTF-16. Deve essere sufficientemente grande da rappresentare qualsiasi unità di codice UTF-16. Viene considerato come un tipo distinto dal compilatore.
Il char32_t
tipo viene usato per la rappresentazione di caratteri UTF-32. Deve essere sufficientemente grande da rappresentare qualsiasi unità di codice UTF-32. Viene considerato come un tipo distinto dal compilatore.
Tipi a virgola mobile
I tipi a virgola mobile usano una rappresentazione I edizione Enterprise E-754 per fornire un'approssimazione dei valori frazionari su un'ampia gamma di grandezza. Nella tabella seguente sono elencati i tipi a virgola mobile in C++ e le restrizioni comparative sulle dimensioni dei tipi a virgola mobile. Queste restrizioni sono imposte dallo standard C++ e sono indipendenti dall'implementazione di Microsoft. Le dimensioni assolute dei tipi a virgola mobile predefinite non sono specificate nello standard.
Digita | Contenuto |
---|---|
float |
Il tipo float è il tipo a virgola mobile più piccolo in C++. |
double |
Il tipo double è un tipo a virgola mobile che è maggiore o uguale a float , ma minore o uguale alla dimensione del tipo long double . |
long double |
Il tipo long double è un tipo a virgola mobile maggiore o uguale al tipo double . |
Specifico di Microsoft: la rappresentazione di long double
e double
è identica. Tuttavia, long double
e double
vengono considerati come tipi distinti dal compilatore. Il compilatore Microsoft C++ usa le rappresentazioni a virgola mobile a 4 e 8 byte edizione Enterprise E-754. Per altre informazioni, vedere Rappresentazione a virgola mobile I edizione Enterprise E.
Tipi integer
Il int
tipo è il tipo integer di base predefinito. Può rappresentare tutti i numeri interi su un intervallo specifico dell'implementazione.
Una rappresentazione integer con segno è una che può contenere valori positivi e negativi. Viene usato per impostazione predefinita o quando è presente la signed
parola chiave del modificatore. La unsigned
parola chiave modifier specifica una rappresentazione senza segno che può contenere solo valori non negativi.
Un modificatore di dimensioni specifica la larghezza in bit della rappresentazione integer utilizzata. Il linguaggio supporta short
i modificatori , long
e long long
. Un short
tipo deve avere una larghezza di almeno 16 bit. Un long
tipo deve avere una larghezza di almeno 32 bit. Un long long
tipo deve avere una larghezza di almeno 64 bit. Lo standard specifica una relazione di dimensione tra i tipi integrali:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Un'implementazione deve mantenere sia i requisiti di dimensione minima che la relazione di dimensione per ogni tipo. Tuttavia, le dimensioni effettive possono e possono variare tra le implementazioni. Per informazioni dettagliate sull'implementazione specifiche di Microsoft, vedere Dimensioni dei tipi predefiniti.
La int
parola chiave può essere omessa quando unsigned
signed
vengono specificati modificatori di dimensioni , o . I modificatori e int
il tipo, se presenti, possono essere visualizzati in qualsiasi ordine. Ad esempio, short unsigned
e unsigned int short
fare riferimento allo stesso tipo.
Sinonimi di tipi integer
I gruppi di tipi seguenti sono considerati sinonimi dal compilatore:
short
,short int
,signed short
,signed short int
unsigned short
,unsigned short int
int
,signed
,signed int
unsigned
,unsigned int
long
,long int
,signed long
,signed long int
unsigned long
,unsigned long int
long long
,long long int
,signed long long
,signed long long int
unsigned long long
,unsigned long long int
I tipi Integer specifici di Microsoft includono i tipi specifici__int8
, , __int16
__int32
, e __int64
. Questi tipi possono usare i signed
modificatori e unsigned
. Il __int8
tipo di dati è sinonimo di tipo char
, __int16
è sinonimo di tipo short
, __int32
è sinonimo di tipo int
e __int64
è sinonimo di tipo long long
.
Dimensioni dei tipi predefiniti
La maggior parte dei tipi predefiniti ha dimensioni definite dall'implementazione. La tabella seguente elenca la quantità di spazio di archiviazione necessaria per i tipi predefiniti in Microsoft C++. In particolare, long
è di 4 byte anche nei sistemi operativi a 64 bit.
Digita | Dimensione |
---|---|
bool , char , char8_t , unsigned char , signed char , __int8 |
1 byte |
char16_t , __int16 , short , unsigned short , wchar_t , __wchar_t |
2 byte |
char32_t , float , __int32 , int , unsigned int , long , unsigned long |
4 byte |
double , __int64 , long double , long long , unsigned long long |
8 byte |
Per un riepilogo dell'intervallo di valori di ogni tipo, vedere Intervalli di tipi di dati.
Per altre informazioni sulla conversione dei tipi, vedere Conversioni standard.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per