Identificatori di tipi C

Gli identificatori di tipo nelle dichiarazioni definiscono il tipo di una dichiarazione di funzione o variabile.

Sintassi

type-specifier: voidcharshortintlongfloatdoublesignedunsignedstruct-or-union-specifierenum-specifiertypedef-name

I signed chartipi , signed int, signed short inte long int firmati, insieme alle rispettive unsigned controparti e enum, sono chiamati tipi integrali . Gli floatidentificatori di tipo , doublee 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 enumdi , 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 voiddi . 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)