Sdílet prostřednictvím


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 chara unsigned char jako mají různé typy.

Specifické pro Microsoft: Proměnné typu char jsou ve výchozím nastavení povýšeny na intsigned 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 doubledouble 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, longa 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 unsignedsignedjsou 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 unsignedunsigned 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, __int32a __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 inta __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é

Rozsahy datových typů