Specifikátory typu jazyka C
Specifikátory typu v deklarací definují typ proměnné nebo deklarace funkce.
Syntaxe
type-specifier
: void
char
short
int
long
float
double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name
signed char
Typy , , signed short int
signed int
a podepsané dlouhé int spolu s jejich unsigned
protějšky a enum
, jsou označovány jako integrální typy. Specifikátory , a long double
typ jsou označovány jako typy s plovoucí desetinou čárkou nebo plovoucí desetinou čárkou. double
float
V deklaraci proměnné nebo funkce můžete použít libovolný specifikátor typu s plovoucí desetinou čárkou nebo s plovoucí desetinou čárkou. Původně, pokud type-specifier
nebyla poskytnuta v deklaraci, byla přijata int
. Kompilátor Microsoftu už nepřijímá výchozí int
deklarace.
Volitelná klíčová slova signed
a unsigned
mohou předcházet nebo sledovat kterýkoli z integrálních typů, s výjimkou enum
, a lze jej také použít samostatně jako specifikátory typu, v takovém případě jsou pochopeny jako signed int
a unsigned int
, v uvedeném pořadí. Při použití samostatně se předpokládá, že klíčové slovo int
je signed
. Při použití samostatně jsou klíčová slova a jsou pochopeny long
jako dlouhé int a short int
.short
Typy výčtu jsou považovány za základní typy. Specifikátory typů pro typy výčtu jsou popsány v deklarací výčtu.
Klíčové slovo void
má tři použití: k určení návratového typu funkce, k určení seznamu typů argumentů pro funkci, která nepřijímá žádné argumenty, a k určení ukazatele na nezadanou typ. Pomocí void
typu můžete deklarovat funkce, které nevrací žádnou hodnotu nebo deklarují ukazatel na nezadanou hodnotu. Informace o void
tom, kdy se zobrazí samostatně v závorkách za názvem funkce, najdete v argumentech.
Specifické pro Microsoft
Kontrola typů je teď vyhovující ANSI, což znamená, že typ short
a typ int
jsou odlišné typy. Tato ukázka například ukazuje redefinici v kompilátoru jazyka Microsoft C, který byl přijat předchozími verzemi kompilátoru.
int myfunc();
short myfunc();
Tento další příklad také vygeneruje upozornění týkající se nepřímého přesměrování na různé typy:
int *pi;
short *ps;
ps = pi; /* Now generates warning */
Kompilátor Jazyka Microsoft C také generuje upozornění pro rozdíly v přihlášení. Příklad:
signed int *pi;
unsigned int *pu;
pi = pu; /* Now generates warning */
Výrazy typu void
se vyhodnocují pro vedlejší účinky. Nelze použít (neexistující) hodnotu výrazu, který má typ void
žádným způsobem, ani nelze převést void
výraz (implicitním nebo explicitním převodem) na jakýkoli typ s výjimkou void
. Pokud v kontextu, kde void
je výraz povinný, použijete výraz jiného typu, jeho hodnota se zahodí.
Pokud chcete splňovat specifikaci ANSI, void**
nelze ji použít jako int**
. Lze použít pouze void*
jako ukazatel na nezadaný typ.
END Microsoft Specific
Můžete vytvořit více specifikátorů typů s deklaracemi typedef
, jak je popsáno v deklaracích Typedef. Informace o velikosti jednotlivých typů najdete v tématu Úložiště základních typů .
Viz také
Deklarace a typy
typeof, __typeof__
(C23)
typeof_unqual, __typeof_unqual__
(C23)