V tomto tutoriálu se pomocí příkladů dozvíme o modifikátorech typů a jejich použití v programování v C ++.
V programování v C ++ se modifikátory typů používají ke změně významu základních datových typů.
V C ++ existují čtyři modifikátory typů.
short
long
signed
unsigned
Zde je krátké shrnutí:
Datový typ | Velikost (v bajtech) | Význam |
---|---|---|
signed int | 4 | použito pro celá čísla (ekvivalentní int ) |
unsigned int | 4 | lze uložit pouze nezáporná celá čísla |
short | 2 | používá se pro malá celá čísla (rozsah -32768 až 32767 ) |
long | alespoň 4 | používá se pro velká celá čísla (ekvivalentní long int ) |
unsigned long | 4 | používá se pro velká kladná celá čísla nebo 0 (ekvivalent unsigned long int ) |
long long | 8 | používá se pro velmi velká celá čísla (ekvivalentní long long int ). |
unsigned long long | 8 | používá se pro velmi velká kladná celá čísla nebo 0 (ekvivalent unsigned long long int ) |
long double | 8 | používá se pro velká čísla s plovoucí desetinnou čárkou |
signed char | 1 | používá se pro znaky (garantovaný rozsah -127 až 127 ) |
unsigned char | 1 | používá se pro znaky (rozsah 0 až 255 ) |
modifikátor krátkého typu
Můžeme použít short
pro malá celá čísla (v rozsahu −32,767
do +32,767
).
Například,
// small integer short a = 12345;
Zde je a short
celočíselná proměnná.
Poznámka: short
je ekvivalentní s short int
.
dlouhý modifikátor typu
Pokud potřebujeme uložit velké celé číslo (v rozsahu -2147483647 až 2147483647), můžeme použít specifikátor typu long
. Například,
// large integer long b = 123456;
Poznámka: long
je ekvivalentní s long int
.
Modifikátor dlouhého typu lze také použít s double
proměnnými.
// large floating-point number long double c = 0.333333333333333333L;
Poznámka: K označení long double
používáme L
příponu. Pokud příponu nepoužíváme L
, je to double
hodnota převedená na long double
(což může mít za následek ztrátu dat).
dlouho dlouho
long
lze opakovat dvakrát a vytvořit long long
typ. Tento typ se používá pro ještě větší čísla než long
. long long
modifikátor typu lze použít pouze s int
.
Například,
// long long int long long num = 12345678;
podepsané a nepodepsané modifikátory
Podepsané proměnné mohou obsahovat jak kladná, tak záporná celá čísla včetně nuly . Například,
// positive valued integer signed int x = 23; // negative valued integer signed int y = -13; // zero-valued integer signed int z = 0;
Tady,
- x obsahuje celé číslo s kladnou hodnotou
- y obsahuje celé číslo se zápornou hodnotou
- z drží celé číslo s nulovou hodnotou
Poznámka:
- Ve výchozím nastavení jsou celá čísla
signed
. Proto místo tohosigned
int
můžeme přímo použítint
. signed
a unsigned lze použít pouze u typů int a char.
Tyto nepodepsané proměnné může mít pouze nezáporné celočíselné hodnoty. Například,
// positive valued integer unsigned int x = 2; unsigned int y = 0;
Tady,
- x obsahuje celé číslo s kladnou hodnotou
- y drží nulu
Obecně platí, že int
proměnná může ukládat rozsah hodnot od -2 147 483 648 do 2 147 483 647 . Zatímco unsigned in
proměnná t může ukládat rozsah hodnot od 0 do 4 294 967 295 .
podepsaný, nepodepsaný a prostý znak
C ++ má 3 různé druhy Znak: char
, signed char
a unsigned char
. V praxi existují v zásadě pouze 2 typy: signed char
a unsigned char
.
To proto, že i když char
není stejný jako signed char
nebo unsigned char
ve standardním C ++, různé překladače zacházet char
jako jeden signed char
nebo unsigned char
podle vlastní volby.
Poznámka: Když používáme pouze char
místo signed char
nebo unsigned char
, je tento typ známý jako prostý znak .
Jak jste možná uhodli, signed char
může ukládat kladná i záporná celá čísla, zatímco unsigned char
může ukládat pouze kladná celá čísla (včetně 0 ).
Zaručena rozsah integer hodnoty signed char
lze uložit, je -127 až 127 , zatímco rozsah unsigned char
je 0 až 255 .
// plain char char plain_1 = 65; char plain_2 = 0; // plain char with negative value // might cause problems with some compilers char plain_3 = -56; // signed char signed char sin_1 = 12; signed char sin_2 = 0; signed char sin_3 = -12; // unsigned char unsigned char unsin_1 = -85; unsigned char unsin_2 = 0;
Tady,
- plain_1 obsahuje kladné celé číslo
- plain_2 obsahuje celé číslo s nulovou hodnotou
- sin_1 obsahuje kladné celé číslo
- sin_2 obsahuje celé číslo s nulovou hodnotou
- sin_3 obsahuje celé číslo se zápornou hodnotou
- unsin_1 obsahuje celé číslo se zápornou hodnotou
- unsin_2 obsahuje celé číslo s nulovou hodnotou
Poznámka: Je lepší nepoužívat prostý znak k provádění numerických manipulací; Místo toho by měl být použit podepsaný znak nebo nepodepsaný znak. Prostý znak by měl být použit pouze k ukládání hodnot znaků.