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
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 << '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; }
Izhod
git pull izvorni mojster
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 fcfs | 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 | - dodajanje v polje java | 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
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 << '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; }
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.