Specyfikatory typu C
Specyfikatory typu w deklaracjach, definiują typ zmiennej lub deklaracje funkcji.
Składnia
type-specifier :
pustychar
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.