Raspon vrste podataka i njihove makronaredbe u C ++

Većinu vremena u konkurentnom programiranju potrebno je dodijeliti varijablu maksimalnu ili minimalnu vrijednost koju vrsta podataka može imati, ali pamćenje tako velikog i preciznog broja postaje težak posao. Stoga C ++ ima određene makronaredbe koje predstavljaju ove brojeve tako da se one mogu izravno dodijeliti varijabli bez da zapravo utipkate cijeli broj.

A Datoteka zaglavlja u C ++ definira makronaredbe koje predstavljaju gornju i donju granicu cjelobrojnih vrsta podataka i Definira makronaredbe za plovke i dvostruke granice. Ove makronaredbe omogućuju vam da lako dodijelite ove ekstremne vrijednosti varijablama bez ručnog upisivanja.

Pogledajmo primjer:

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  ;   }   


Izlaz

 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

Vrste podataka i njihovi makronaredbe raspona

Popis nekih makronaredbi tipa podataka spominje se u nastavku:

Vrsta podataka

Raspon

Makro za min vrijednost

Makro za maksimalnu vrijednost

čar

-128 do +127

Char_min

Char_max

Kratki char

-128 do +127

Schar_min

Schar_max

nepotpisani char

0 do 255

-

Letenje_max

kratki int

-32768 do +32767

Shrt_min

Shrt_max

nepotpisani kratki int

0 do 65535

-

Ushrt_max

int

-2147483648 do +2147483647

Int_min

Int_max

nepotpisani int

0 do 4294967295

-

Uint_max

dugi int

-9223372036854775808 do +922372036854775807

Long_min

Long_max

nepotpisani dugi int

0 do 1844674407370951615

-

Usong_Max

Dugi dugi int

-9223372036854775808 do +922372036854775807

Brod_min

Llong_max

nepotpisani dugi dugi int

0 do 1844674407370951615

-

Ullong_max

plovka

1.17549E-38 do 3.40282E+38

Flt_min

Flt_max

Ploviti (negativan)

-1.17549E -38 do -3.40282E+38

-Lt_min

-Flt_max

dvostruko

2.22507E-308 do 1.79769E+308

Dbl_min

Dbl_max

dvostruko (negativno)

-2.22507E -308 do -1.79769E+308

-Dbl_min

-Dbl_max

Ograničenja vrste podataka u modernom C ++

Gornji makro pristup za gornju i donju granicu tipa podataka je stari C jezični pristup nasljeđen C ++. Ali C ++ također imaju vlastitu metodu za pružanje programerima iste informacije.

C ++ nudi numerički_limits <> Predložak klase kao moderna alternativa ovim makronaredbama. Ovaj predložak pruža objektni orijentirani pristup za pristup ograničenjima vrste podataka. Definirana je unutar Datoteka zaglavlja.

Pogledajmo primjer:

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  ;   }   


Izlaz

 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

Preporučuje se koristiti ovaj pristup kako biste pronašli gornju i donju granicu tipa podataka umjesto makronaredbi jer je sigurniji i čitljiviji tip u usporedbi s pristupom utemeljenom na makro.