Sdílet prostřednictvím


Specifikátory typu jazyka C

Specifikátory typu v deklarací definují typ proměnné nebo deklarace funkce.

Syntaxe

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

signed charTypy , , signed short intsigned inta 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. doublefloat 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)