Identificatori di tipi CC Type Specifiers

Gli identificatori di tipo nelle dichiarazioni definiscono il tipo di una dichiarazione di funzione o variabile.Type specifiers in declarations define the type of a variable or function declaration.

SintassiSyntax

type-specifier:type-specifier:
voidvoid

charchar

shortshort

intint

longlong

floatfloat

doubledouble

signedsigned

unsignedunsigned

struct-or-union-specifierstruct-or-union-specifier

enum-specifierenum-specifier

typedef-nametypedef-name

I tipi signed char, signed int, signed short int e signed long int insieme alle relative controparti unsigned e a enum vengono denominati tipi "integrali".The signed char, signed int, signed short int, and signed long int types, together with their unsigned counterparts and enum, are called "integral" types. Gli identificatori di tipo float, double e long double vengono denominati tipi "mobili" o "a virgola mobile".The float, double, and long double type specifiers are referred to as "floating" or "floating-point" types. È possibile utilizzare qualsiasi identificatore di tipo a virgola mobile o integrale in una dichiarazione di funzione o variabile.You can use any integral or floating-point type specifier in a variable or function declaration. Se un type-specifier non viene specificato in una dichiarazione, si presuppone che sia int.If a type-specifier is not provided in a declaration, it is taken to be int.

Le parole chiave facoltative signed e unsigned possono precedere o seguire uno dei tipi integrali eccetto enum e possono essere usate da sole come identificatori di tipo, nel qual caso vengono riconosciute rispettivamente come signed int e unsigned int.The optional keywords signed and unsigned can precede or follow any of the integral types, except enum, and can also be used alone as type specifiers, in which case they are understood as signed int and unsigned int, respectively. Se usata da sola, la parola chiave int viene interpretata come signed.When used alone, the keyword int is assumed to be signed. Se usate da sole, le parole chiave long e short vengono interpretate come long int e short int.When used alone, the keywords long and short are understood as long int and short int.

I tipi di enumerazione sono considerati tipi di base.Enumeration types are considered basic types. Gli identificatori di tipo per i tipi di enumerazione sono illustrati in Dichiarazioni di enumerazioni.Type specifiers for enumeration types are discussed in Enumeration Declarations.

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.The keyword void has three uses: to specify a function return type, to specify an argument-type list for a function that takes no arguments, and to specify a pointer to an unspecified type. È possibile utilizzare il tipo void per dichiarare le funzioni che non restituiscono valori o per dichiarare un puntatore a un tipo non specificato.You can use the void type to declare functions that return no value or to declare a pointer to an unspecified type. Vedere Argomenti per informazioni su void quando viene visualizzato da solo tra parentesi dopo il nome di una funzione.See Arguments for information on void when it appears alone within the parentheses following a function name.

Sezione specifica MicrosoftMicrosoft Specific

Il controllo dei tipi è ora conforme a ANSI, pertanto il tipo short e il tipo int sono tipi distinti.Type checking is now ANSI-compliant, which means that type short and type int are distinct types. Ad esempio, questa è una ridefinizione del compilatore Microsoft C che è stata accettata da versioni precedenti del compilatore.For example, this is a redefinition in the Microsoft C compiler that was accepted by previous versions of the compiler.

int   myfunc();  
short myfunc();  

Nell'esempio seguente viene inoltre generato un avviso su un riferimento indiretto a tipi diversi:This next example also generates a warning about indirection to different types:

int *pi;  
short *ps;  

ps = pi;  /* Now generates warning */  

Il compilatore Microsoft C genera inoltre gli avvisi per le differenze nel segno.The Microsoft C compiler also generates warnings for differences in sign. Ad esempio:For example:

signed int *pi;  
unsigned int *pu  

pi = pu;  /* Now generates warning */  

Le espressioni di tipo void vengono valutate per gli effetti collaterali.Type void expressions are evaluated for side effects. Non è possibile utilizzare il valore (inesistente) di un'espressione con tipo void in nessun modo, né convertire un'espressione void (mediante conversione implicita o esplicita) in un qualsiasi tipo eccetto void.You cannot use the (nonexistent) value of an expression that has type void in any way, nor can you convert a void expression (by implicit or explicit conversion) to any type except void. Se si utilizza un'espressione di qualsiasi altro tipo in un contesto in cui viene richiesta un'espressione void, il valore viene rimosso.If you do use an expression of any other type in a context where a void expression is required, its value is discarded.

Per essere conforme alla specifica ANSI, void*\* non può essere usato come int*\*.To conform to the ANSI specification, void*\* cannot be used as int*\*. Solo void\* può essere usato come puntatore a un tipo non specificato.Only void\* can be used as a pointer to an unspecified type.

Fine sezione specifica MicrosoftEND Microsoft Specific

È possibile creare identificatori di tipo aggiuntivi con dichiarazioni typedef, come descritto in Dichiarazioni typedef.You can create additional type specifiers with typedef declarations, as described in Typedef Declarations. Per informazioni sulle dimensioni di ogni tipo vedere Archiviazione di tipi di base.See Storage of Basic Types for information on the size of each type.

Vedere ancheSee Also

Dichiarazioni e tipiDeclarations and Types