logo

C++'da Veri Tipi Aralıkları ve Makroları

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.

C++'daki başlık dosyası, tam sayı veri türlerinin üst ve alt sınırlarını temsil eden makroları tanımlar ve Float ve double limitler için makroları tanımlar. Bu makrolar, bu uç değerleri manuel olarak yazmanıza gerek kalmadan değişkenlere kolayca atamanıza olanak tanır.



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 başlık dosyası.

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.