Udostępnij za pośrednictwem


Specyfikatory typu C

Specyfikatory typu w deklaracjach, definiują typ zmiennej lub deklaracje funkcji.

Składnia

  • type-specifier :
    pusty

    char

    short

    int

    long

    typ float

    double

    oznaczony

    nieoznaczony

    struct-or-union-specifier

    enum-specifier

    typedef-name

Typy signed char, signed int, signed short int i signed long int, wraz z ich odpowiednikami unsigned i enum są nazywane typami "integralnymi".Specyfikatory typu float, double, i long double są określane jako typy "zmienne" lub "zmiennoprzecinkowe".Można użyć dowolnego integralnego zmiennoprzecinkowego specyfikatora typu w deklaracji zmiennej lub funkcji.Jeśli type-specifier nie został podany w deklaracji, przyjmuje się, że jest to int.

Opcjonalne słowa kluczowe signed i unsigned można poprzedzić dowolnym typem integralnym, z wyjątkiem enum i można również użyć ich, jako specyfikatory typu, w którym to przypadku są rozumiane, jako signed int i unsigned int.Kiedy słowo kluczowe int jest używane samodzielnie to zakłada się, że jest signed.Używane samodzielnie, słowo kluczowe long i short są rozumiane, jako long int i short int.

Typy wyliczeniowe są traktowane, jako typy podstawowe.Specyfikatory typu dla typów wyliczeniowych są omówione w Deklaracje modułów wyliczających.

Słowo kluczowe void ma trzy zastosowania: określa typ zwracanej funkcji, określa listę typów argumentu dla funkcji, która nie przyjmuje żadnych argumentów i określa wskaźnik do nieokreślonego typu.Można użyć typu void, aby zadeklarować funkcje, która nie zwraca żadnej wartości lub zadeklarować wskaźnik do nieokreślonego typu.Zobacz Argumenty, aby uzyskać informacje na temat void, kiedy pojawia się tylko w nawiasach po nazwie funkcji.

Specyficzne dla firmy Microsoft

Kontrola typów jest teraz standardem ANSI, co oznacza, że typy short i int są różnymi typami.Na przykład, jest to ponowna definicja w kompilatorze Microsoft C, która został przyjęta przez poprzednie wersje kompilatora.

int   myfunc();
short myfunc();

W tym przykładzie kompilator generuje również ostrzeżenie o pośrednictwie do różnych typów:

int *pi;
short *ps;

ps = pi;  /* Now generates warning */

Kompilator Microsoft C generuje również ostrzeżenia o różnicach w znakach.Na przykład:

signed int *pi;
unsigned int *pu

pi = pu;  /* Now generates warning */

Typ wyrażenia void jest oszacowany dla efektów ubocznych.Nie można użyć (nieistniejącej) wartości wyrażenia, która ma typ void w żaden sposób, nie można także konwertować wyrażenia void (przez bezpośrednią lub jawną konwersje) do dowolnego typu z wyjątkiem void.Podczas używania wyrażenia innego typu w kontekście gdzie wyrażenie void jest wymagane, jego wartość jest odrzucona.

Zgodnie ze specyfikacją standardu ANSI void** nie może być użyty, jako int**.Tylko void* może być używany, jako wskaźnik do nieokreślonego typu.

KONIEC informacji specyficznych dla firmy Microsoft

Można utworzyć dodatkowy typ specyfikatora z deklaracją typedef, zgodnie z opisem w Deklaracja typedef.Zobacz Magazyn typów podstawowych, aby uzyskać informację na temat wielkości każdego typu.

Zobacz też

Koncepcje

Deklaracje i typy