6.7.2 Type specifiers
Syntax
type-specifier:
void
char
short
int
long
float
double
signed
unsigned
_Bool
_Complex
struct-or-union-specifier *
enum-specifier
typedef-name
Constraints
At least one type specifier shall be given in the declaration specifiers in each declaration, and in the specifier-qualifier list in each struct declaration and type name. Each list of type specifiers shall be one of the following sets (delimited by commas, when there is more than one set on a line); the type specifiers may occur in any order, possibly intermixed with the other declaration specifiers.
void
char
signed char
unsigned char
short, signed short, short int, or signed short int
unsigned short, or unsigned short int
int, signed, or signed int
unsigned, or unsigned int
long, signed long, long int, or signed long int
unsigned long, or unsigned long int
long long, signed long long, long long int, or signed long long int
unsigned long long, or unsigned long long int
float
double
long double
_Bool
float _Complex
double _Complex
long double _Complex
struct or union specifier *
enum specifier
typedef name
The type specifier _Complex shall not be used if the implementation does not provide complex types.[1]
Semantics
Specifiers for structures, unions, and enumerations are discussed in 6.7.2.1 through 6.7.2.3. Declarations of typedef names are discussed in 6.7.7. The characteristics of the other types are discussed in 6.2.5.
Each of the comma-separated sets designates the same type, except that for bit-fields, it is implementation-defined whether the specifier int designates the same type as signed int or the same type as unsigned int.
Forward References
Footnotes