logo

Duomenų tipo diapazonai ir jų makrokomandos C ++

Dažniausiai konkurencinio programavimo metu reikia priskirti kintamąjį maksimalią ar minimalią vertę, kurią gali laikyti duomenų tipas, tačiau atsiminti tokį didelį ir tikslų skaičių pasirodo sunkus darbas. Todėl C ++ turi tam tikras makrokomandas, kad vaizduotų šiuos skaičius, kad juos būtų galima tiesiogiai priskirti kintamajam, iš tikrųjų neįrašant viso numerio.

antraštės failas C ++ apibrėžia makrokomandas, kurios žymi viršutinę ir apatinę sveikojo skaičiaus duomenų tipų ribas ir Apibrėžia plūdės ir dvigubų ribų makrokomandas. Šios makrokomandos leidžia lengvai priskirti šias ekstremalias reikšmes kintamiesiems, rankiniu būdu jų neįtraukiant.



Pažvelkime į pavyzdį:

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 << 'nnshort int ranges from: ' << SHRT_MIN  << ' to ' << SHRT_MAX << endl;  cout << 'nint ranges from: ' << INT_MIN << ' to '  << INT_MAX << endl;  cout << 'nlong int ranges from: ' << LONG_MIN << ' to '  << LONG_MAX << endl;  cout << 'nfloat ranges from: ' << FLT_MIN << ' to '  << FLT_MAX << endl;  return 0; } 


Išvestis

skaičiuoti skirtingai
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

Duomenų tipai ir jų diapazono makrokomandos

Kai kurių duomenų tipo makrokomandų sąrašas yra minimas žemiau:



Duomenų tipas

Diapazonas

Makrokomandos už min. Vertę



Makrokomandos maksimalia vertė

char

-128 iki +127

Char_min

Char_max

Trumpas char

-128 iki +127

Schar_min

Schar_max

nepasirašytas char

Nuo 0 iki 255

-

Flying_max

Trumpas int

-32768 iki +32767

Shrt_min

Shrt_max

nepasirašytas trumpas int

Nuo 0 iki 65535

-

Edith Mack Hirsch

Ushrt_max

int

-2147483648 iki +2147483647

Int_min

Int_max

nepasirašytas int

Nuo 0 iki 4294967295

-

Uint_max

Ilgas int

-9223372036854775808 iki +9223372036854775807

Long_min

Long_max

nepasirašytas ilgas int

Nuo 0 iki 18446744073709551615

-

USONG_MAX

Ilgas ilgas int

-9223372036854775808 iki +9223372036854775807

Ship_min

Llong_max

nepasirašytas ilgas ilgas int

Nuo 0 iki 18446744073709551615

-

Ullong_max

plūduras

1.17549E-38 iki 3.40282E+38

FLT_MIN

FLT_MAX

plūdė (neigiama)

-1.17549E -38 iki -3.40282E+38

-Lt_min

-Flt_max

dvigubai

romėniškas skaitmuo nuo 1 iki 100

2.22507E-308 iki 1.79769E+308

Dbl_min

DBL_MAX

Dvigubas (neigiamas)

-2.22507E -308 iki -1.79769E+308

-Dbl_min

-Dbl_max

Duomenų tipo apribojimai šiuolaikiniame C ++

Aukščiau pateiktas makrokomandos metodas viršutinei ir apatinei duomenų tipo riboms yra senasis C kalbos metodas, paveldėtas C ++. Tačiau „C ++“ taip pat turi savo metodą, kad programuotojams būtų pateikta ta pati informacija.

C ++ siūlo NUMERIC_LIMITS<> Klasės šablonas kaip moderni alternatyva šioms makrokomandoms. Šis šablonas pateikia labiau į objektą orientuotą požiūrį į duomenų tipo ribas. Jis apibrėžtas viduje antraštės failas.

Pažvelkime į pavyzdį:

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 << 'nint ranges from: ' << numeric_limits<int>::min() << ' to '  << numeric_limits<int>::max() << endl;  cout << 'nlong int ranges from: ' << numeric_limits<long>::min() << ' to '  << numeric_limits<long>::max() << endl;  cout << 'nfloat ranges from: ' << numeric_limits<float>::min() << ' to '  << numeric_limits<float>::max() << endl;  return 0; } 


Išvestis

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

Šį metodą rekomenduojama naudoti norint rasti viršutinę ir apatinę duomenų tipo ribas, o ne makrokomandas, nes jis yra labiau saugus ir skaitomas, palyginti su makrokrokomandos metodu.