Modifikátory typu C ++: krátke, dlhé, podpísané a nepodpísané

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ť shortpre malé celé čísla (v rozsahu −32,767do +32,767).

Napríklad,

 // small integer short a = 12345;

Tu je a shortceločí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 doublepremennými.

 // large floating-point number long double c = 0.333333333333333333L;

Poznámka: Na označenie long doublepoužívame Lpríponu. Ak príponu nepoužívame L, je to doublehodnota, ktorá sa prevedie na long double(čo môže mať za následok stratu údajov).

dlho dlho

longmožno vytvoriť dvakrát opakovaním long long. Tento typ sa používa pre ešte väčšie počty ako long. long longmodifiká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 namiesto signed 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 intpremenná môže ukladať rozsah hodnôt od -2 147 483 648 do 2 147 483 647 . Zatiaľ čo unsigned inpremenná 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 chara unsigned char. V praxi existujú v zásade iba 2 typy: signed chara unsigned char.

To preto, že aj keď charnie je rovnaký ako signed charalebo unsigned charv štandardnom C ++, rôzne prekladača zaobchádzať charako jeden signed charalebo unsigned charpodľa vlastnej voľby.

Poznámka: Keď používame iba charnamiesto signed charalebo unsigned char, tento typ je známy ako obyčajný znak .

Ako ste už asi uhádli, signed charmôžu sa v nich ukladať kladné aj záporné celé čísla, zatiaľ čo v pamäti sa unsigned charmôžu ukladať iba kladné celé čísla (vrátane 0 ).

Zaručená rozsah integer hodnoty signed charmožno uložiť, je -127 až 127 , pričom rozsah unsigned charje 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.

Zaujímavé články...