V tomto tutoriále sa pomocou príkladov dozvieme o modifikátoroch typov a o tom, ako ich používať v programovaní v C ++.
V programovaní v C ++ sa modifikátory typov používajú na zmenu významu základných dátových typov.
V C ++ sú štyri modifikátory typov.
short
long
signed
unsigned
Tu je krátke zhrnutie:
Dátový typ | Veľkosť (v bajtoch) | Význam |
---|---|---|
signed int | 4 | použité pre celé čísla (ekvivalent int ) |
unsigned int | 4 | môžu ukladať iba nezáporné celé čísla |
short | 2 | používa sa pre malé celé čísla (rozsah -32768 až 32767 ) |
long | najmenej 4 | použité pre veľké celé čísla (ekvivalent long int ) |
unsigned long | 4 | používa sa pre veľké kladné celé čísla alebo 0 (ekvivalent unsigned long int ) |
long long | 8 | používa sa pre veľmi veľké celé čísla (ekvivalent k long long int ). |
unsigned long long | 8 | používa sa pre veľmi veľké kladné celé čísla alebo 0 (ekvivalent unsigned long long int ) |
long double | 8 | používa sa pre veľké čísla s pohyblivou rádovou čiarkou |
signed char | 1 | použité pre znaky (garantovaný rozsah -127 až 127 ) |
unsigned char | 1 | použité pre znaky (rozsah 0 až 255 ) |
modifikátor krátkeho typu
Môžeme použiť short
pre malé celé čísla (v rozsahu −32,767
do +32,767
).
Napríklad,
// small integer short a = 12345;
Tu je a short
celočíselná premenná.
Poznámka: short
je ekvivalentom k short int
.
dlhý modifikátor typu
Ak potrebujeme uložiť veľké celé číslo (v rozsahu -2147483647 až 2147483647), môžeme použiť špecifikátor typu long
. Napríklad,
// large integer long b = 123456;
Poznámka: long
je ekvivalentom k long int
.
Modifikátor dlhého typu je možné použiť aj s double
premennými.
// large floating-point number long double c = 0.333333333333333333L;
Poznámka: Na označenie long double
používame L
príponu. Ak príponu nepoužívame L
, je to double
hodnota, ktorá sa prevedie na long double
(čo môže mať za následok stratu údajov).
dlho dlho
long
možno vytvoriť dvakrát opakovaním long long
. Tento typ sa používa pre ešte väčšie počty ako long
. long long
modifikátor typu je možné použiť iba s int
.
Napríklad,
// long long int long long num = 12345678;
podpísané a nepodpísané modifikátory
Podpísané premenné môžu obsahovať celé aj kladné celé číslo vrátane nuly . Napríklad,
// positive valued integer signed int x = 23; // negative valued integer signed int y = -13; // zero-valued integer signed int z = 0;
Tu,
- x drží celé číslo s kladnou hodnotou
- y má celé číslo so zápornou hodnotou
- z drží celé číslo s nulovou hodnotou
Poznámka:
- V predvolenom nastavení sú celé čísla
signed
. Preto namiestosigned
int
, môžeme priamo použiťint
. signed
a nepodpísané je možné použiť iba s typmi int a char.
Tieto nepodpísané premenné môže mať iba nezáporné celočíselné hodnoty. Napríklad,
// positive valued integer unsigned int x = 2; unsigned int y = 0;
Tu,
- x drží celé číslo s kladnou hodnotou
- y drží nulu
Všeobecne platí, že int
premenná môže ukladať rozsah hodnôt od -2 147 483 648 do 2 147 483 647 . Zatiaľ čo unsigned in
premenná t môže uchovávať rozsah hodnôt od 0 do 4 294 967 295 .
podpísaný, nepodpísaný a obyčajný znak
C ++ má 3 rôzne druhy Znak: char
, signed char
a unsigned char
. V praxi existujú v zásade iba 2 typy: signed char
a unsigned char
.
To preto, že aj keď char
nie je rovnaký ako signed char
alebo unsigned char
v štandardnom C ++, rôzne prekladača zaobchádzať char
ako jeden signed char
alebo unsigned char
podľa vlastnej voľby.
Poznámka: Keď používame iba char
namiesto signed char
alebo unsigned char
, tento typ je známy ako obyčajný znak .
Ako ste už asi uhádli, signed char
môžu sa v nich ukladať kladné aj záporné celé čísla, zatiaľ čo v pamäti sa unsigned char
môžu ukladať iba kladné celé čísla (vrátane 0 ).
Zaručená rozsah integer hodnoty signed char
možno uložiť, je -127 až 127 , pričom 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;
Tu,
- plain_1 obsahuje celé číslo s kladnou hodnotou
- plain_2 obsahuje celé číslo s nulovou hodnotou
- sin_1 obsahuje celé číslo s kladnou hodnotou
- sin_2 obsahuje celé číslo s nulovou hodnotou
- sin_3 obsahuje celé číslo so zápornou hodnotou
- unsin_1 obsahuje celé číslo so zápornou hodnotou
- unsin_2 obsahuje celé číslo s nulovou hodnotou
Poznámka: Je lepšie nepoužívať obyčajný znak na vykonávanie numerických manipulácií; Namiesto toho by sa na to mal použiť podpísaný znak alebo nepodpísaný znak. Obyčajný znak by sa mal používať iba na ukladanie znakových hodnôt.