Sdílet prostřednictvím


Specifikátory typu jazyka C

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

Syntax

  • specifikátor typu:
    void

    char

    short

    int

    long

    float

    double

    signed

    unsigned

    Specifikátor struktury nebo sjednocení

    specifikátor výčtu

    název typedef

Typy signed char, signed int, signed short int a signed long int se spolu s jejich protějšky unsigned a enum nazývají "integrální" typy.Specifikátory typu float, double a long double jsou označovány jako "plovoucí" typy nebo jako typy "s plovoucí řádovou čárkou".V deklaraci proměnné nebo funkce lze použít libovolný integrální specifikátor typu nebo specifikátor typu s plovoucí řádovou čárkou.Není-li specifikátor typu uveden v deklaraci, je považován za int.

Volitelná klíčová slova signed a unsigned mohou předcházet nebo následovat za integrálními typy, s výjimkou enum a lze je také použít samostatně jako specifikátoru typu, kde jsou v takovémto případě chápána jako signed int a unsigned int.Při samostatném použití je klíčové slovo int bráno jako signed.Při samostatném použití jsou klíčová slova long a short považována za long int a short int.

Výčtové typy jsou považovány za základní typy.Specifikátory typu výčtu jsou popsány v tématu Deklarace výčtu.

Klíčové slovo void má tři použití: Určení návratového typu funkce, specifikace typu argumentu funkce, která nepřijímá žádné argumenty a zadání ukazatele na neurčitý typ.Typ void lze použít pro deklarování funkcí, které nevracejí žádnou hodnotu nebo pro deklaraci ukazatele neurčitého typu.Více informací o chování void, při samostatném zobrazení v rámci závorek a následováním za názvem funkce, naleznete v tématu Argumenty.

Specifické pro Microsoft

Kontrola typu nyní podporuje standard ANSI, což znamená, že jsou typy short a int odlišné typy.To je například předefinování v kompilátoru Microsoft C, který byl přijat v předchozích verzích kompilátor.

int   myfunc();
short myfunc();

Další příklad vygeneruje upozornění o nepřímém odkazování na různé typy:

int *pi;
short *ps;

ps = pi;  /* Now generates warning */

Kompilátor Microsoft C také generuje upozornění pro rozdíly v sign.Příklad:

signed int *pi;
unsigned int *pu

pi = pu;  /* Now generates warning */

Výrazy typu void jsou vyhodnocovány na vedlejší účinky.Hodnotu (neexistující) výrazu, který má typ void nelze použít libovolným způsobem, nelze provést ani konverzi výrazu void (pomocí implicitního nebo explicitního převodu) na libovolný typ kromě void.Není-li použit výraz jakéhokoli dalšího typu v kontextu, kde je vyžadován výraz void, je jeho hodnota ignorována.

Pro splnění specifikace ANSI, nelze void ** použít jako int **.Jako ukazatel na neurčitý typ lze použít pouze void*.

Specificka produktu Microsoft END

Jak je popsáno v tématu Deklarace typedef, je možné vytvořit další specifikátory typu typedef.Více informací o velikosti každého typu naleznete v tématu Úložiště základních typů.

Viz také

Koncepty

Deklarace a typy