Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Specyfikatory typów w deklaracjach definiują typ deklaracji zmiennej lub funkcji.
Składnia
type-specifier: voidcharshortintlongfloatdoublesignedunsignedstruct-or-union-specifierenum-specifiertypedef-name
Typy signed char, signed int, , signed short inti podpisanych długich int wraz z ich unsigned odpowiednikami i enum, są nazywane typami całkowitolicztowymi .
floatSpecyfikatory typu , doublei long double są określane jako typy zmiennoprzecinkowe lub zmiennoprzecinkowe. W deklaracji zmiennej lub funkcji można użyć dowolnego specyfikatora typu całkowitego lub zmiennoprzecinkowego. Pierwotnie, jeśli element type-specifier nie został podany w deklaracji, został przewieziony do int. Kompilator firmy Microsoft nie akceptuje już deklaracji domyślnych int .
Opcjonalne słowa kluczowe signed i unsigned mogą poprzedzać lub podążać za dowolnym z typów całkowitych, z wyjątkiem enum, i mogą być również używane samodzielnie jako specyfikatory typów, w tym przypadku są one zrozumiałe odpowiednio jako signed int i unsigned int. W przypadku użycia samego słowa kluczowego int przyjmuje się signedjako . W przypadku użycia samych słów kluczowych long i short są zrozumiałe tak długo, jak długo int i short int.
Typy wyliczenia są uważane za typy podstawowe. Specyfikatory typów wyliczenia są omawiane w deklaracjach wyliczenia.
Słowo kluczowe void ma trzy zastosowania: aby określić typ zwracany przez funkcję, aby określić listę typów argumentów dla funkcji, która nie przyjmuje argumentów, i określić wskaźnik do nieokreślonego typu. Możesz użyć void typu , aby zadeklarować funkcje, które nie zwracają żadnej wartości lub zadeklarować wskaźnik do nieokreślonego typu. Zobacz Argumenty , aby uzyskać informacje na void temat tego, kiedy pojawia się on samodzielnie w nawiasach po nazwie funkcji.
Specyficzne dla firmy Microsoft
Sprawdzanie typów jest teraz zgodne ze standardem ANSI, co oznacza, że typ short i typ int są odrębnymi typami. Na przykład w tym przykładzie pokazano ponowne zdefiniowanie w kompilatorze Microsoft C zaakceptowanym przez poprzednie wersje kompilatora.
int myfunc();
short myfunc();
W następnym przykładzie zostanie również wygenerowane ostrzeżenie dotyczące pośredniców do różnych typów:
int *pi;
short *ps;
ps = pi; /* Now generates warning */
Kompilator języka Microsoft C generuje również ostrzeżenia dotyczące różnic w logowaniu. Na przykład:
signed int *pi;
unsigned int *pu;
pi = pu; /* Now generates warning */
Wyrażenia typu void są oceniane pod kątem skutków ubocznych. Nie można użyć (nieistniejące) wartości wyrażenia, które ma typ void w żaden sposób, ani nie można przekonwertować void wyrażenia (niejawnej lub jawnej konwersji) na dowolny typ z wyjątkiem void. Jeśli używasz wyrażenia dowolnego innego typu w kontekście, w którym void wymagane jest wyrażenie, jego wartość zostanie odrzucona.
W celu zachowania zgodności ze specyfikacją void** ANSI nie można używać jako int**. Tylko void* może być używany jako wskaźnik do nieokreślonego typu.
Koniec specyfiki Microsoftu
Można utworzyć więcej specyfikatorów typów z deklaracjami, zgodnie z typedef opisem w deklaracji Typedef. Aby uzyskać informacje na temat rozmiaru każdego typu, zobacz Magazyn typów podstawowych .
Zobacz też
Deklaracje i typy
typeof, __typeof__ (C23)
typeof_unqual, __typeof_unqual__ (C23)