Dodatni tipi in njihovi makroni v C ++

Večino časa v konkurenčnem programiranju je treba dodeliti spremenljivko največjo ali najnižjo vrednost, ki jo lahko hrani vrsta podatkov, vendar je zapomnitev tako velikega in natančnega števila težko delo. Zato ima C ++ določene makrone, ki predstavljajo te številke, tako da jih je mogoče neposredno dodeliti spremenljivki, ne da bi dejansko vtipkali celotno številko.

The Datoteka glave v C ++ definira makrone, ki predstavljajo zgornjo in spodnjo mejo številnih vrst podatkov in definira makrone za float in dvojne omejitve. Ti makroni vam omogočajo, da te ekstremne vrednosti enostavno dodelite spremenljivkam, ne da bi jih ročno vtipkali.

Oglejmo si primer:

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


Izhod

 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

Podatkovni tipi in njihovi makroni v dosegu

Spodaj je omenjen seznam nekaterih makrov tipa podatkov:

Vrsta podatkov

Domet

Makro za min vrednost

Makro za največjo vrednost

char

-128 do +127

Char_min

Char_max

kratek char

-128 do +127

Schar_min

Schar_max

nepodpisan char

0 do 255

-

Flying_max

kratek int

-32768 do +32767

Shrt_min

Shrt_max

Nepodpisani kratki int

0 do 65535

-

USHRT_MAX

int

-2147483648 do +2147483647

Int_min

Int_max

nepodpisan int

0 do 4294967295

-

Uint_max

dolga int

-9223372036854775808 do +9223372036854775807

Long_min

Long_max

nepodpisan dolg int

0 do 18446744073709551615

-

Usong_max

dolga dolga int

-9223372036854775808 do +9223372036854775807

Ship_min

Llong_max

nepodpisan dolg dolg int

0 do 18446744073709551615

-

Ullong_max

plavati

1.17549E-38 do 3.40282E+38

Flt_min

Flt_max

float (negativno)

-1.17549E -38 do -3.40282E+38

-Lt_min

-Flt_max

dvojno

2.22507E-308 do 1.79769E+308

Dbl_min

Dbl_max

dvojno (negativno)

-2.22507E -308 do -1.79769E+308

-Dbl_min

-Dbl_max

Omejitve podatkovnih vrst v sodobnem C ++

Zgornji makro pristop za zgornjo in spodnjo mejo tipa podatkov je stari pristop jezika C, ki ga podeduje C ++. Toda C ++ ima tudi svojo metodo, da programerjem zagotavlja enake informacije.

C ++ ponuja Numeric_limits <> Predloga razreda kot sodobna alternativa tem makronim. Ta predloga zagotavlja bolj objektno usmerjen pristop za dostop do omejitev vrst podatkov. Definiran je znotraj datoteka glave.

Oglejmo si primer:

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


Izhod

 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

Ta pristop je priporočljivo najti zgornjo in spodnjo mejo vrste podatkov namesto makrov, saj je v primerjavi z makro pristopom bolj varen in berljiv.