Rozsahy typu dat a jejich makra v C ++

Většinou v konkurenčním programování je třeba přiřadit proměnnou maximální nebo minimální hodnotu, kterou může datový typ držet, ale zapamatovat si tak velké a přesné číslo vychází jako obtížná práce. Proto C ++ má určitá makra, aby tato čísla reprezentovala, aby mohla být přímo přiřazena k proměnné, aniž by ve skutečnosti psalo celé číslo.

The Soubor záhlaví v C ++ definuje makra, která představují horní a dolní meze celočíselných datových typů a Definuje makra pro plovák a dvojité limity. Tato makra vám umožňují snadno přiřadit tyto extrémní hodnoty proměnným, aniž byste je ručně zadávali.

Pojďme se podívat na příklad:

C++
   #include          // for int char macros   #include         // for float double macros   #include         using     namespace     std  ;   int     main  ()     {          // Displaying ranges with the help of macros      cout      < <     'char ranges from: '      < <     CHAR_MIN      < <     ' to '       < <     CHAR_MAX      < <     endl  ;      cout      < <     '  n  nshort int ranges from: '      < <     SHRT_MIN       < <     ' to '      < <     SHRT_MAX      < <     endl  ;      cout      < <     '  n  int ranges from: '      < <     INT_MIN      < <     ' to '       < <     INT_MAX      < <     endl  ;      cout      < <     '  n  long int ranges from: '      < <     LONG_MIN      < <     ' to '       < <     LONG_MAX      < <     endl  ;      cout      < <     '  n  float ranges from: '      < <     FLT_MIN      < <     ' to '       < <     FLT_MAX      < <     endl  ;      return     0  ;   }   


Výstup

 char ranges from: -128 to 127   

nshort int ranges from: -32768 to 32767

int ranges from: -2147483648 to 2147483647

long int ranges from: -9223372036854775808 to 9223372036854775807

float ranges from: 1.17549e-38 to 3.40282e+38

Typy dat a jejich rozsah makra

Níže je uveden seznam některých makrů typu dat:

Typ dat

Rozsah

Makro pro Min Hodnota

Makro pro maximální hodnotu

char

-128 až +127

Char_min

Char_max

Krátký char

-128 až +127

Schar_Min

Schar_max

nepodepsaný char

0 až 255

-

Flying_max

krátký int

-32768 až +32767

SHRT_MIN

SHRT_MAX

nepodepsaný krátký int

0 až 65535

-

Ushrt_max

int

-2147483648 až +2147483647

Int_min

Int_max

nepodepsaný int

0 až 4294967295

-

Uint_max

dlouhý int

-9223372036854775808 až +9223372036854775807

Long_min

Long_max

nepodepsaný dlouhý int

0 až 18446744073709551615

-

Usong_max

Dlouhá dlouhá int

-9223372036854775808 až +9223372036854775807

Ship_min

Llong_max

nepodepsaný dlouhý dlouhý int

0 až 18446744073709551615

-

Ullong_max

plovák

1.17549e-38 až 3,40282E+38

Flt_min

Flt_max

plovák (negativní)

-1.17549e -38 až -3,40282e+38

-Lt_min

-Flt_max

dvojnásobek

2.22507E-308 až 1,79769E+308

Dbl_min

Dbl_max

Double (negativní)

-2,22507e -308 až -1,79769e+308

-DBL_MIN

-DBL_MAX

Limity datového typu v moderním C ++

Výše uvedený makro přístup pro horní a dolní limity datového typu je starý C jazykový přístup zděděný C ++. Ale C ++ má také svou vlastní metodu pro poskytování stejných informací programátorům.

C ++ nabízí numeric_limits <> Šablona třídy jako moderní alternativa k těmto makrům. Tato šablona poskytuje objektově orientovaný přístup pro přístup k limitům typu dat. Je definován uvnitř soubor záhlaví.

Pojďme se podívat na příklad:

C++
   #include          #include         using     namespace     std  ;   int     main  ()     {          // Displaying ranges with the help of macros      cout      < <     'short int ranges from: '      < <     numeric_limits   <  short     int  >::  min  ()       < <     ' to '      < <     numeric_limits   <  short     int  >::  max  ()      < <     endl  ;      cout      < <     '  n  int ranges from: '      < <     numeric_limits   <  int  >::  min  ()      < <     ' to '       < <     numeric_limits   <  int  >::  max  ()      < <     endl  ;      cout      < <     '  n  long int ranges from: '      < <     numeric_limits   <  long  >::  min  ()      < <     ' to '       < <     numeric_limits   <  long  >::  max  ()      < <     endl  ;      cout      < <     '  n  float ranges from: '      < <     numeric_limits   <  float  >::  min  ()      < <     ' to '       < <     numeric_limits   <  float  >::  max  ()      < <     endl  ;      return     0  ;   }   


Výstup

 short int ranges from: -32768 to 32767   

int ranges from: -2147483648 to 2147483647

long int ranges from: -9223372036854775808 to 9223372036854775807

float ranges from: 1.17549e-38 to 3.40282e+38

Doporučuje se použít tento přístup k nalezení horních a dolních limitů datového typu namísto makrů, protože je ve srovnání s přístupem založeným na makro bezpečnější a čitelný typ.