Adattípus -tartományok és makrók C ++ -ban

A versenyképes programozás legtöbb alkalommal kell hozzárendelni azt a maximális vagy minimális értéket, amelyet az adattípus megtarthat, de egy ilyen nagy és pontos szám emlékezete nehéz feladat. Ezért a C ++ rendelkezik bizonyos makrókkal, amelyek ábrázolják ezeket a számokat, hogy ezeket közvetlenül hozzárendelhessék a változóhoz anélkül, hogy ténylegesen beírnák az egész számot.

A A fejlécfájl a C ++ -ban meghatározza a makrókat, amelyek az egész adattípusok felső és alsó határait képviselik és meghatározza a makrókat az úszó és a kettős határértékekhez. Ezek a makrók lehetővé teszik, hogy ezeket a szélsőséges értékeket könnyen hozzárendelje a változókhoz anélkül, hogy kézzel kiírnák őket.

Vessen egy pillantást egy példára:

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


Kibocsátás

 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

Adattípusok és azok tartománymakrók

Az alábbiakban említjük az egyes makrók adattípusának listáját:

Adattípus

Hatótávolság

Makró minér értékre

Makró a maximális értékhez

csészék

-128 -+127

Char_min

Char_max

rövid székes

-128 -+127

Schar_min

Schar_max

alá nem írt char

0-255

--

Flying_max

rövid int

-32768 -+32767

Shrt_min

SHRT_MAX

alá nem írt rövid int

0–65535

--

Ushrt_max

intert

-2147483648 -+2147483647

Int_min

Int_max

alá nem írt Int

0 -tól 4294967295

--

Uint_max

hosszú int

-9223372036854775808 -+922337203685475807

Long_min

Long_max

alá nem írt hosszú Int

0 -tól 18446744073709551615

--

Usong_max

hosszú hosszú int

-9223372036854775808 -+922337203685475807

Ship_min

Llong_max

alá nem írt hosszú hosszú int

0 -tól 18446744073709551615

--

Ullong_max

úszó

1.17549E-38-3.40282E+38

Flt_min

FLT_MAX

úszó (negatív)

-1.17549E -38 --30282E+38

-Lt_min

-Flt_max

kettős

2.22507E-308-1.79769E+308

Dbl_min

Dbl_max

dupla (negatív)

-2.22507E -308 --1.79769E+308

-Dbl_min

-DBL_MAX

Adattípus -korlátok a modern C ++ -ban

Az adattípus felső és alsó határainak fenti makro megközelítése a régi C nyelvű megközelítés, amelyet a C ++ örököl. De a C ++ rendelkezik saját módszerrel a programozók ugyanazon információk biztosítására.

C ++ kínálja a numeric_limits <> osztálysablon, mint ezeknek a makróknak a modern alternatívája. Ez a sablon objektum-orientáltabb megközelítést biztosít az adattípus-korlátok eléréséhez. A fejléc fájl.

Vessen egy pillantást egy példára:

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


Kibocsátás

 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

Javasoljuk, hogy ezt a megközelítést alkalmazzák az adattípus felső és alsó határának a makrók helyett, mivel ez biztonságosabb és olvashatóbb a makro-alapú megközelítéshez képest.