Datu tipa diapazoni un to makro C ++
Lielākoties konkurences programmēšanas laikā ir jāpiešķir mainīgais, kas ir maksimālā vai minimālā vērtība, ko var saglabāt datu tips, taču tik liela un precīza skaitļa atcerēšanās ir grūts darbs. Tāpēc C ++ ir daži makro, lai attēlotu šos skaitļus, lai tos varētu tieši piešķirt mainīgajam, faktiski neiesniedzot visu numuru.
Līdz
Apskatīsim piemēru:
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 ; }
Izvade
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+38Datu tipi un to diapazona makro
Dažu datu tipa makro saraksts ir minēts zemāk:
| Datu tips | Diapazons | Makro minimālajai vērtībai | Makro maksimālajai vērtībai |
|---|---|---|---|
| apkopot | -128 līdz +127 | Char_min | Char_max |
| īss char | -128 līdz +127 | Schar_min | Schar_max |
| neparakstīts char | 0 līdz 255 | - | Flying_max |
| īss int | -32768 līdz +32767 | SHRT_MIN | SHRT_MAX |
| neparakstīts īss int | 0 līdz 65535 | - | Ushrt_max |
| int | -2147483648 līdz +2147483647 | Int_min | Int_max |
| neparakstīts int | 0 līdz 4294967295 | - | Uint_max |
| ilgi int | -9223372036854775808 līdz +9223372036854775807 | Long_min | Long_max |
| neparakstīts ilgi int | 0 līdz 18446744073709551615 | - | Usong_max |
| ilgi ilgi int | -9223372036854775808 līdz +9223372036854775807 | Ship_min | Llong_max |
| neparakstīts ilgi ilgi int | 0 līdz 18446744073709551615 | - | Ullong_max |
| peldēt | 1.17549E-38 līdz 3.40282E+38 | Flt_min | Flt_max |
| pludiņš (negatīvs) | -1.17549E -38 līdz -3,40282E+38 | -Lt_min | -Flt_max |
| dubultot | 2.22507E-308 līdz 1,79769E+308 | Dbl_min | Dbl_max |
| dubultā (negatīvs) | -2.22507E -308 līdz -1.79769E+308 | -Dbl_min | -Dbl_max |
Datu tipa ierobežojumi mūsdienu C ++
Iepriekš minētā makro pieeja datu tipa augšējām un apakšējām robežām ir vecā C valodas pieeja, kuru manto C ++. Bet C ++ ir arī sava metode, lai programmētājiem sniegtu tādu pašu informāciju.
C ++ piedāvā numeric_limits <> Klases veidne kā mūsdienīga alternatīva šiem makro. Šī veidne nodrošina uz objektu orientētāku pieeju datu tipa ierobežojumu piekļuvei. Tas ir definēts iekšpusē
Apskatīsim piemēru:
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 ; }
Izvade
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+38Ieteicams izmantot šo pieeju, lai makro vietā atrastu datu tipa augšējās un apakšējās robežas, jo tas ir vairāk drošs un lasāms, salīdzinot ar makro balstīto pieeju.