Typy wbudowane (C++)
Wbudowane typy (nazywane również typami podstawowymi) są określane przez standard języka C++ i są wbudowane w kompilator. Wbudowane typy nie są definiowane w żadnym pliku nagłówkowym. Typy wbudowane są podzielone na trzy główne kategorie: całkowite, zmiennoprzecinkowe i void. Typy całkowite reprezentują liczby całkowite. Typy zmiennoprzecinkowe mogą określać wartości, które mogą mieć części ułamkowe. Większość wbudowanych typów jest traktowana jako odrębne typy przez kompilator. Jednak niektóre typy są synonimami lub traktowane jako równoważne typy przez kompilator.
Typ pustki
Typ void
opisuje pusty zestaw wartości. Nie można określić zmiennej typu void
. Typ void
jest używany głównie do deklarowania funkcji, które nie zwracają żadnych wartości lub deklarują ogólne wskaźniki do nietypowych lub arbitralnie wpisanych danych. Dowolne wyrażenie można jawnie przekonwertować lub rzutować na typ void
. Jednak takie wyrażenia są ograniczone do następujących zastosowań:
Instrukcja wyrażenia. (Aby uzyskać więcej informacji, zobacz Wyrażenia.
Lewy operand operatora przecinka. (Aby uzyskać więcej informacji, zobacz Operator przecinka).
Drugi lub trzeci operand operatora warunkowego (
? :
). (Aby uzyskać więcej informacji, zobacz Wyrażenia z operatorem warunkowym).
std::nullptr_t
Słowo kluczowe nullptr
jest stałą wskaźnika null typu std::nullptr_t
, która jest konwertowana na dowolny nieprzetworzonego typu wskaźnika. W celu uzyskania więcej informacji, zobacz następujący temat: nullptr
.
Typ logiczny
Typ bool
może mieć wartości true
i false
. Rozmiar bool
typu jest specyficzny dla implementacji. Zobacz Rozmiary wbudowanych typów dla szczegółów implementacji specyficznych dla firmy Microsoft.
Typy znaków
Typ char
jest typem reprezentacji znaków, który efektywnie koduje elementy członkowskie podstawowego zestawu znaków wykonywania. Kompilator języka C++ traktuje zmienne typu char
, signed char
i unsigned char
jako o różnych typach.
Specyficzne dla firmy Microsoft: zmienne typu char
są domyślnie promowane tak int
, jakby z typu signed char
, chyba że /J
jest używana opcja kompilacji. W takim przypadku są traktowane jako typ unsigned char
i są promowane do int
bez rozszerzenia podpisywania.
Zmienna typu wchar_t
jest typem znaków wielobajtowych lub wielobajtowych. Użyj prefiksu L
przed literałem znaku lub ciągu, aby określić typ znaku szerokiego.
Specyficzne dla firmy Microsoft: domyślnie wchar_t
jest typem natywnym, ale można użyć /Zc:wchar_t-
polecenia , aby utworzyć wchar_t
definicję typu dla elementu unsigned short
. Typ __wchar_t
jest synonimem specyficznym dla firmy Microsoft dla typu natywnego wchar_t
.
Typ char8_t
jest używany do reprezentacji znaków UTF-8. Ma tę samą reprezentację co unsigned char
element , ale jest traktowany jako odrębny typ przez kompilator. Typ char8_t
jest nowy w języku C++20. Specyficzne dla firmy Microsoft: użycie opcji wymaga opcji kompilatora lub nowszej char8_t
/std:c++20
(na przykład /std:c++latest
).
Typ char16_t
jest używany do reprezentacji znaków UTF-16. Musi być wystarczająco duży, aby reprezentować dowolną jednostkę kodu UTF-16. Jest on traktowany jako odrębny typ przez kompilator.
Typ char32_t
jest używany do reprezentacji znaków UTF-32. Musi być wystarczająco duży, aby reprezentować dowolną jednostkę kodu UTF-32. Jest on traktowany jako odrębny typ przez kompilator.
Typy zmiennoprzecinkowe
Typy zmiennoprzecinkowe używają reprezentacji IEEE-754 w celu zapewnienia przybliżenia wartości ułamkowych w szerokim zakresie wielkości. W poniższej tabeli wymieniono typy zmiennoprzecinkowe w języku C++ oraz ograniczenia porównawcze dotyczące rozmiarów typów zmiennoprzecinkowych. Te ograniczenia są wymagane przez standard C++ i są niezależne od implementacji firmy Microsoft. Bezwzględny rozmiar wbudowanych typów zmiennoprzecinkowych nie jest określony w standardzie.
Type | Zawartość |
---|---|
float |
Typ float to najmniejszy typ zmiennoprzecinkowy w języku C++. |
double |
Typ double to typ zmiennoprzecinkowy, który jest większy lub równy typowi float , ale krótszy niż lub równy rozmiarowi typu long double . |
long double |
Typ long double jest typem zmiennoprzecinkowym, który jest większy lub równy typowi double . |
Specyficzne dla firmy Microsoft: reprezentacja long double
i double
jest identyczna. long double
Jednak i double
są traktowane jako odrębne typy przez kompilator. Kompilator języka Microsoft C++ używa reprezentacji zmiennoprzecinkowych IEEE-754 4 i 8-bajtowych. Aby uzyskać więcej informacji, zobacz Reprezentacja zmiennoprzecinkowa IEEE.
Typy całkowite
Typ int
jest domyślnym typem podstawowej liczby całkowitej. Może reprezentować wszystkie liczby całkowite w zakresie specyficznym dla implementacji.
Reprezentacja liczby całkowitej ze znakiem jest taka, która może zawierać zarówno wartości dodatnie, jak i ujemne. Jest on używany domyślnie lub gdy signed
słowo kluczowe modyfikatora jest obecne. Słowo unsigned
kluczowe modyfikatora określa niepodpisaną reprezentację, która może zawierać tylko wartości inne niż ujemne.
Modyfikator rozmiaru określa szerokość w bitach używanej reprezentacji całkowitej. Język obsługuje short
modyfikatory , long
i long long
. short
Typ musi mieć co najmniej 16 bitów szerokości. long
Typ musi mieć co najmniej 32 bity szerokości. long long
Typ musi mieć co najmniej 64 bity szerokości. Standard określa relację rozmiaru między typami całkowitymi:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Implementacja musi zachować zarówno minimalne wymagania dotyczące rozmiaru, jak i relację rozmiaru dla każdego typu. Jednak rzeczywiste rozmiary mogą się różnić w zależności od implementacji. Zobacz Rozmiary wbudowanych typów dla szczegółów implementacji specyficznych dla firmy Microsoft.
Słowo int
kluczowe może zostać pominięte, gdy signed
określono modyfikatory rozmiaru lub , unsigned
lub . Modyfikatory i int
typ, jeśli istnieje, mogą pojawić się w dowolnej kolejności. Na przykład short unsigned
i unsigned int short
odwołaj się do tego samego typu.
Synonimy typów liczb całkowitych
Następujące grupy typów są uznawane za synonimy kompilatora:
short
,short int
,signed short
,signed short int
unsigned short
,unsigned short int
int
,signed
,signed int
unsigned
,unsigned int
long
,long int
,signed long
,signed long int
unsigned long
,unsigned long int
long long
,long long int
,signed long long
,signed long long int
unsigned long long
,unsigned long long int
Typy całkowite specyficzne dla firmy Microsoft obejmują określone typy __int8
szerokości, __int16
, __int32
i __int64
. Te typy mogą używać signed
modyfikatorów i unsigned
. Typ __int8
danych jest synonimem typu char
, __int16
jest synonimem typu , __int32
jest synonimem typu , jest synonimem typu short
i __int64
jest synonimem typu int
long long
.
Rozmiary wbudowanych typów
Większość typów wbudowanych ma rozmiary zdefiniowane przez implementację. W poniższej tabeli wymieniono ilość miejsca wymaganego do przechowywania wbudowanych typów w języku Microsoft C++. W szczególności long
jest to 4 bajty nawet w 64-bitowych systemach operacyjnych.
Type | Size |
---|---|
bool , char , char8_t , unsigned char , signed char , __int8 |
1 bajt |
char16_t , __int16 , short , unsigned short , wchar_t , __wchar_t |
2 bajty |
char32_t , float , __int32 , int , unsigned int , long , unsigned long |
4 bajty |
double , __int64 , long double , long long , unsigned long long |
8 bajtów |
Zobacz Zakresy typów danych, aby uzyskać podsumowanie zakresu wartości każdego typu.
Aby uzyskać więcej informacji na temat konwersji typów, zobacz Konwersje standardowe.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla