Identificatori di tipi C
Gli identificatori di tipo nelle dichiarazioni definiscono il tipo di una dichiarazione di funzione o variabile.
Sintassi
type-specifier
: void
char
short
int
long
float
double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name
I signed char
tipi , signed int
, signed short int
e long int firmati, insieme alle rispettive unsigned
controparti e enum
, sono chiamati tipi integrali . Gli float
identificatori di tipo , double
e long double
vengono definiti tipi a virgola mobile o a virgola mobile. È possibile utilizzare qualsiasi identificatore di tipo a virgola mobile o integrale in una dichiarazione di funzione o variabile. Originariamente, se un type-specifier
oggetto non è stato fornito in una dichiarazione, è stato impiegato come int
. Il compilatore Microsoft non accetta più dichiarazioni predefinite int
.
Le parole chiave facoltative e possono precedere o seguire uno qualsiasi dei tipi integralisigned
, ad eccezione enum
di , e possono anche essere usate solo come identificatori di tipo, nel qual caso sono compresi rispettivamente come signed int
e unsigned int
.unsigned
Se usata da sola, si presuppone che la parola chiave int
sia signed
. Se usato da solo, le parole chiave long
e short
vengono comprese come long int e short int
.
I tipi di enumerazione sono considerati tipi di base. Gli identificatori di tipo per i tipi di enumerazione sono illustrati in Dichiarazioni di enumerazioni.
La parola chiave void
dispone di tre utilizzi: specificare un tipo restituito dalla funzione, specificare un elenco di tipi di argomento per una funzione che non accetta argomenti e specificare un puntatore a un tipo non specificato. È possibile utilizzare il tipo void
per dichiarare le funzioni che non restituiscono valori o per dichiarare un puntatore a un tipo non specificato. Vedere Argomenti per informazioni su void
quando viene visualizzato da solo tra parentesi dopo il nome di una funzione.
Sezione specifica Microsoft
Il controllo dei tipi è ora conforme ad ANSI, il che significa che il tipo short
e il tipo int
sono tipi distinti. Ad esempio, questo esempio mostra una ridefinizione nel compilatore Microsoft C accettato dalle versioni precedenti del compilatore.
int myfunc();
short myfunc();
Nell'esempio seguente viene inoltre generato un avviso su un riferimento indiretto a tipi diversi:
int *pi;
short *ps;
ps = pi; /* Now generates warning */
Il compilatore Microsoft C genera inoltre gli avvisi per le differenze nel segno. Ad esempio:
signed int *pi;
unsigned int *pu;
pi = pu; /* Now generates warning */
Le espressioni di tipo void
vengono valutate per gli effetti collaterali. Non è possibile usare il valore (inesistente) di un'espressione con tipo void
in alcun modo, né è possibile convertire un'espressione void
(tramite conversione implicita o esplicita) in qualsiasi tipo ad eccezione void
di . Se si utilizza un'espressione di qualsiasi altro tipo in un contesto in cui viene richiesta un'espressione void
, il valore viene rimosso.
Per essere conforme alla specifica ANSI, void**
non può essere usato come int**
. È possibile usare solo void*
come puntatore a un tipo non specificato.
Fine sezione specifica Microsoft
È possibile creare più identificatori di tipo con typedef
dichiarazioni, come descritto in Dichiarazioni Typedef. Per informazioni sulle dimensioni di ogni tipo vedere Archiviazione di tipi di base.
Vedi anche
Dichiarazioni e tipi
typeof, __typeof__
(C23)
typeof_unqual, __typeof_unqual__
(C23)