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      < <     '  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  ;   }   


Çıkış

 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

-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

-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      < <     '  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  ;   }   


Çı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.