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.
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 < < ' 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 ; }
Išvestis
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+38Duomenų 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 | - | 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 | 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
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 < < ' 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 ; }
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.