Předdefinované typy (C++)
Předdefinované typy (označované také jako základní typy) jsou určeny standardem jazyka C++ a jsou integrované do kompilátoru. Předdefinované typy nejsou definovány v žádném souboru hlaviček. Předdefinované typy jsou rozděleny do tří hlavních kategorií: integrál, plovoucí desetinná čárka a void. Celočíselné typy představují celá čísla. Typy s plovoucí desetinnou čárkou mohou určovat hodnoty, které mohou mít zlomkové části. Většina předdefinovaných typů se kompilátorem považuje za odlišné typy. Některé typy jsou však synonymy nebo považovány za ekvivalentní typy kompilátorem.
Typ Void
Typ void
popisuje prázdnou sadu hodnot. Nelze zadat žádnou proměnnou typu void
. Tento void
typ se používá především k deklaraci funkcí, které nevrací žádné hodnoty nebo deklarují obecné ukazatele na netypová nebo libovolně zadaná data. Libovolný výraz lze explicitně převést nebo přetypovat na typ void
. Tyto výrazy jsou však omezeny na následující použití:
Příkaz výrazu. (Další informace najdete v tématu Výrazy.)
Levý operand operátoru čárky. (Další informace najdete v tématu Operátor čárky.)
Druhý nebo třetí operand podmíněného operátoru (
? :
). (Další informace najdete v tématu Výrazy s podmíněným operátorem.)
std::nullptr_t
Klíčové slovo nullptr
je konstanta ukazatele null typu std::nullptr_t
, která je konvertibilní na jakýkoli nezpracovaný typ ukazatele. Další informace najdete na webu nullptr
.
Logický typ
Typ bool
může mít hodnoty true
a false
. Velikost bool
typu je specifická pro implementaci. Podrobnosti o implementaci specifické pro Microsoft najdete v tématu Velikosti předdefinovaných typů .
Typy znaků
Typ char
je typ reprezentace znaku, který efektivně kóduje členy základní spouštěcí znakové sady. Kompilátor C++ zpracovává proměnné typu char
, signed char
a unsigned char
jako mají různé typy.
Specifické pro Microsoft: Proměnné typu char
jsou ve výchozím nastavení povýšeny na int
signed char
typ, pokud /J
není použita možnost kompilace. V tomto případě se považují za typ unsigned char
a jsou povýšeny na int
bez přípony znaménka.
Proměnná typu wchar_t
je celoznakový nebo vícebajtový typ znaku. Pomocí předpony L
před znakem nebo řetězcovým literálem určete typ širokého znaku.
Specifické pro Microsoft: Ve výchozím nastavení wchar_t
je nativní typ, ale můžete použít /Zc:wchar_t-
k vytvoření wchar_t
definice typu pro unsigned short
. Typ __wchar_t
je synonymem specifický pro Microsoft pro nativní wchar_t
typ.
Typ char8_t
se používá pro reprezentaci znaků UTF-8. Má stejnou reprezentaci jako unsigned char
, ale je považován za odlišný typ kompilátorem. Typ char8_t
je v jazyce C++20 nový. Specifické pro Microsoft: použití char8_t
vyžaduje možnost kompilátoru /std:c++20
nebo novější (například /std:c++latest
).
Typ char16_t
se používá pro reprezentaci znaků UTF-16. Musí být dostatečně velký, aby představoval jakoukoli jednotku kódu UTF-16. Je považován za odlišný typ kompilátorem.
Typ char32_t
se používá pro reprezentaci znaků UTF-32. Musí být dostatečně velký, aby představoval jakoukoli jednotku kódu UTF-32. Je považován za odlišný typ kompilátorem.
Typy s plovoucí desetinou čárkou
Typy s plovoucí desetinnou čárkou používají reprezentaci IEEE-754 k zajištění aproximace desetinných hodnot v širokém rozsahu velikostí. Následující tabulka uvádí typy s plovoucí desetinou čárkou v jazyce C++ a srovnávací omezení velikostí typů s plovoucí desetinou čárkou. Tato omezení jsou povinná standardem C++ a jsou nezávislá na implementaci Microsoftu. Absolutní velikost předdefinovaných typů s plovoucí desetinou čárkou není uvedená ve standardu.
Typ | Obsah |
---|---|
float |
Typ float je nejmenší typ s plovoucí desetinou čárkou v jazyce C++. |
double |
Typ double je typ s plovoucí desetinou čárkou, který je větší než nebo roven typu float , ale kratší nebo roven velikosti typu long double . |
long double |
Typ long double je typ s plovoucí desetinou čárkou, který je větší nebo roven typu double . |
Specifické pro Microsoft: Reprezentace long double
a double
je identická. long double
double
Kompilátor je však považován za odlišné typy. Kompilátor jazyka Microsoft C++ používá reprezentace s plovoucí desetinou čárkou 4 a 8 bajtů IEEE-754. Další informace najdete v tématu Reprezentace s plovoucí desetinou čárkou IEEE.
Celočíselné typy
Typ int
je výchozí základní celočíselnou typ. Může představovat všechna celá čísla v rozsahu specifickém pro implementaci.
Celočíselná reprezentace se míněnou hodnotou, která může obsahovat kladné i záporné hodnoty. Používá se ve výchozím nastavení nebo když signed
je k dispozici modifikační klíčové slovo. unsigned
Modifikační klíčové slovo určuje nepodepsané vyjádření, které může obsahovat pouze nezáporné hodnoty.
Modifikátor velikosti určuje šířku v bitech použité celočíselné reprezentace. Jazyk podporuje short
, long
a long long
modifikátory. Typ short
musí mít šířku nejméně 16 bitů. Typ long
musí být aspoň 32 bitů široký. Typ long long
musí být nejméně 64 bitů široký. Standard určuje vztah velikosti mezi integrálními typy:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Implementace musí udržovat minimální požadavky na velikost i vztah velikosti pro každý typ. Skutečné velikosti se ale můžou lišit mezi implementacemi. Podrobnosti o implementaci specifické pro Microsoft najdete v tématu Velikosti předdefinovaných typů .
Klíčové int
slovo může být vynecháno, pokud unsigned
signed
jsou zadány modifikátory velikosti , nebo velikost. Modifikátory a int
typ, pokud jsou přítomné, se mohou objevit v libovolném pořadí. Můžete například short unsigned
unsigned int short
odkazovat na stejný typ.
Synonyma celočíselného typu
Kompilátor považuje následující skupiny typů za synonyma:
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
Celočíselné typy specifické pro Microsoft zahrnují konkrétní šířku __int8
, __int16
, __int32
a __int64
typy. Tyto typy mohou používat signed
modifikátory.unsigned
Datový __int8
typ je synonymum s typem char
, __int16
je synonymem typu short
, __int32
je synonymem typu int
a __int64
je synonymem typu long long
.
Velikosti předdefinovaných typů
Většina předdefinovaných typů má velikosti definované implementací. Následující tabulka uvádí množství úložiště potřebné pro předdefinované typy v jazyce Microsoft C++. Konkrétně long
je to 4 bajty i v 64bitových operačních systémech.
Typ | Velikost |
---|---|
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ů |
Souhrn rozsahů hodnot jednotlivých typů najdete v části Rozsahy datových typů.
Další informace o převodu typů naleznete v tématu Standardní převody.
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro