Rozsahy typu údajov a ich makrá v C ++

Väčšinou v konkurenčnom programovaní je potrebné priradiť premennú maximálnu alebo minimálnu hodnotu, ktorú môže dátový typ drží, ale pamätať si, že také veľké a presné číslo sa stane zložitou úlohou. Preto má C ++ určité makrá, ktoré tieto čísla reprezentujú, takže ich môžu byť priamo priradené k premennej bez toho, aby v skutočnosti zadali celé číslo.

Ten Súbor hlavičky v C ++ definuje makrá, ktoré predstavujú hornú a dolnú hranicu celočíselných typov údajov a Definuje makry pre float a dvojité limity. Tieto makrá vám umožňujú ľahko priradiť tieto extrémne hodnoty premenným bez toho, aby ich ručne zadali.

Pozrime sa na prí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 údajov a ich makrá s rozsahom

Zoznam niektorých makier dátového typu je uvedený nižšie:

Typ údajov

Rozsah

Makro pre minimálnu hodnotu

Makro pre maximálnu hodnotu

char

-128 až +127

Char_min

Char_max

krátky char

-128 až +127

Schar_min

Schar_max

nepodpísaný

0 až 255

-

Flying_max

krátka int

-32768 až +32767

Shrt_min

Shrt_max

nepodpísané krátke int

0 až 65535

-

Ushrt_max

int

-2147483648 až +2147483647

Int_min

Int_max

nepodpísaný int

0 až 4294967295

-

Uint_max

dlhý int

-922337203685475808 až +9223372036854775807

Long_min

Long_max

nepodpísané dlhé int

0 až 18446744073709551615

-

Usong_max

dlhý int

-922337203685475808 až +9223372036854775807

Loď

Llong_max

nepodpísané dlhé dlhé int

0 až 18446744073709551615

-

Ullong_max

plávať

1,17549E-38 až 3,40282E+38

Flt_min

Flt_max

float (negatívny)

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

-Lt_min

-Flt_max

zdvojnásobiť

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

Dbl_min

Dbl_max

dvojitý (negatívny)

-2.22507e -308 až -1.79769e+308

-Dbl_min

-Dbl_max

Limity dátového typu v modernom C ++

Vyššie uvedený makro prístup k horným a dolným limitom dátového typu je starý prístup jazyka C zdedený C ++. Ale C ++ má tiež svoju vlastnú metódu na poskytovanie rovnakých informácií programátorom.

C ++ ponúka numeric_limits <> Šablóna triedy ako moderná alternatíva k týmto makrám. Táto šablóna poskytuje objektovo orientovanejší prístup na prístup k limitom dátového typu. Je definovaný vo vnútri Súbor hlavičky.

Pozrime sa na prí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

Odporúča sa použiť tento prístup na nájdenie horných a dolných limitov dátového typu namiesto makier, pretože je bezpečný a čitateľný v porovnaní s prístupom založený na makro.