Rekabetçi programlamada çoğu zaman değişkene veri tipinin tutabileceği maksimum veya minimum değeri atama ihtiyacı vardır, ancak bu kadar büyük ve kesin bir sayıyı hatırlamak zor bir iş olarak ortaya çıkar. Bu nedenle C++'ta bu sayıları temsil edecek belirli makrolar bulunur; böylece bunlar, tam sayıyı yazmadan doğrudan değişkene atanabilir.
Bir örneğe bakalım:
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; }
Çıkış
aritmetik mantık Birimi
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
Veri Türleri ve Aralık Makroları
Veri türü makrolarından bazılarının listesi aşağıda verilmiştir:
Veri Türü | Menzil | Minimum değer için makro | Maksimum değer için makro |
---|---|---|---|
karakter | -128 ila +127 | Char_min | CHAR_MAX |
kısa karakter | -128 ila +127 | SCHAR_MIN | SCHAR_MAX |
imzasız karakter | 0 ila 255 | -- | Uçan_maks |
kısa iç | -32768'den +32767'ye | SHRT_MIN | SHRT_MAX |
imzasız kısa int | 0 ila 65535 | -- | USHRT_MAX |
int | -2147483648'den +2147483647'ye | INT_MIN | INT_MAX |
imzasız int | 0 ila 4294967295 | -- | UINT_MAX |
uzun int java değişkeni değişken | -9223372036854775808 ila +9223372036854775807 | LONG_MIN | LONG_MAX |
imzasız uzun int | 0 ila 18446744073709551615 | -- | Usong_Max |
uzun uzun int | -9223372036854775808 ila +9223372036854775807 | Ship_min | LLONG_MAX |
imzasız uzun uzun int | 0 ila 18446744073709551615 | -- | ULLONG_MAX |
batmadan yüzmek | 1,17549e-38 ila 3,40282e+38 | Flt_min | FLT_MAX |
kayan nokta (negatif) | -1,17549e-38 ila -3,40282e+38 | -Lt_min | -FLT_MAX |
çift | 2,22507e-308 ila 1,79769e+308 | DBL_MIN | DBL_MAX |
çift (negatif) | -2,22507e-308 ila -1,79769e+308 sklearn doğruluk puanı | -DBL_MIN | -DBL_MAX |
Modern C++'da Veri Türü Sınırları
Veri tipinin üst ve alt limitleri için yukarıdaki makro yaklaşım, C++ tarafından devralınan eski C dili yaklaşımıdır. Ancak C++'ın programcılara aynı bilgiyi sağlamak için kendi yöntemi de vardır.
C++ şunları sunar: numeric_limits<> Bu makrolara modern bir alternatif olarak sınıf şablonu. Bu şablon, veri türü sınırlarına erişim için daha nesne odaklı bir yaklaşım sağlar. İçinde tanımlanır
Bir örneğe bakalım:
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; }
Çıkış
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
Makro tabanlı yaklaşıma göre daha tür güvenli ve okunabilir olduğundan, veri türünün üst ve alt sınırlarını bulmak için makrolar yerine bu yaklaşımın kullanılması önerilir.