Většinou v konkurenčním programování je třeba přiřadit proměnnou maximální nebo minimální hodnotu, kterou může datový typ držet, ale zapamatovat si tak velké a přesné číslo vychází jako obtížná práce. Proto C ++ má určitá makra, aby tato čísla reprezentovala, aby mohla být přímo přiřazena k proměnné, aniž by ve skutečnosti psalo celé číslo.
The
Pojďme se podívat na příklad:
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; }
Výstup
setinterval javascript
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
Typy dat a jejich rozsah makra
Níže je uveden seznam některých makrů typu dat:
Typ dat | Rozsah | Makro pro Min Hodnota | Makro pro maximální hodnotu |
---|---|---|---|
char | -128 až +127 | Char_min | Char_max |
Krátký char | -128 až +127 | Schar_Min | Schar_max |
nepodepsaný char | 0 až 255 | - | Flying_max |
krátký int | -32768 až +32767 | SHRT_MIN | SHRT_MAX |
nepodepsaný krátký int | 0 až 65535 | - | Ushrt_max |
int | -2147483648 až +2147483647 | Int_min | Int_max |
nepodepsaný int arp příkaz | 0 až 4294967295 | - | Uint_max |
dlouhý int | -9223372036854775808 až +9223372036854775807 | Long_min | Long_max |
nepodepsaný dlouhý int | 0 až 18446744073709551615 | - | Usong_max |
Dlouhá dlouhá int | -9223372036854775808 až +9223372036854775807 | Ship_min | Llong_max |
nepodepsaný dlouhý dlouhý int | 0 až 18446744073709551615 | - | Ullong_max |
plovák | 1.17549e-38 až 3,40282E+38 | Flt_min | Flt_max |
plovák (negativní) | -1.17549e -38 až -3,40282e+38 | -Lt_min | -Flt_max |
dvojnásobek | 2.22507E-308 až 1,79769E+308 | Dbl_min | Dbl_max metody seznamu java |
Double (negativní) | -2,22507e -308 až -1,79769e+308 | -DBL_MIN | -DBL_MAX |
Limity datového typu v moderním C ++
Výše uvedený makro přístup pro horní a dolní limity datového typu je starý C jazykový přístup zděděný C ++. Ale C ++ má také svou vlastní metodu pro poskytování stejných informací programátorům.
C ++ nabízí numeric_limits<> Šablona třídy jako moderní alternativa k těmto makrům. Tato šablona poskytuje objektově orientovaný přístup pro přístup k limitům typu dat. Je definován uvnitř
Pojďme se podívat na příklad:
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; }
Výstup
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
Doporučuje se použít tento přístup k nalezení horních a dolních limitů datového typu namísto makrů, protože je ve srovnání s přístupem založeným na makro bezpečnější a čitelný typ.