logo

Диапазон на типа данни и техните макроси в C ++

Повечето пъти в конкурентното програмиране е необходимо да се присвои променливата максималната или минималната стойност, която типът на данните може да се държи, но запомнянето на такъв голям и прецизен брой е трудна работа. Следователно C ++ има определени макроси, които да представят тези числа, така че те да могат да бъдат директно присвоени на променливата, без всъщност да въвеждат целия номер.

The Заглавен файл в C ++ Определя макроси, които представляват горната и долната граница на целочислените типове данни и Определя макросите за плаващи и двойни граници. Тези макроси ви позволяват лесно да присвоявате тези екстремни стойности на променливи, без ръчно да ги въвеждате.



Нека да разгледаме пример:

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


Изход

jquery това щракване
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

Типове данни и макросите им на обхвата

Списък на някои от макросите от типа данни е споменат по -долу:



Тип данни

Обхват

Макрос за мин. Стойност



Макрос за максимална стойност

Чар

-128 до +127

Char_min

Char_max

Кратка чара

-128 до +127

Schar_min

Schar_max

неподписан чар

0 до 255

-

Flying_max

Кратка int

-32768 до +32767

Shrt_min

Shrt_max

неподписан къса int

0 до 65535

-

Ushrt_max

int

-2147483648 до +2147483647

Int_min

Int_max

неподписан int

0 до 4294967295

-

Uint_max

дълъг int

-9223372036854775808 до +9223372036854775807

Long_min

Long_max

неподписан дълъг int

0 до 18446744073709551615

-

масив срещу arraylist

Usong_max

дълъг дълъг int

-9223372036854775808 до +9223372036854775807

Ship_min

Llong_max

неподписан дълъг дълъг int

0 до 18446744073709551615

-

Ullong_max

float

1.17549E-38 до 3.40282E+38

Flt_min

Flt_max

Поплавък (отрицателен)

array.sort в java

-1.17549E -38 до -3.40282e+38

-Lt_min

-Flt_max

двойно

2.22507E-308 до 1.79769E+308

Dbl_min

Dbl_max

двойно (отрицателно)

-2.22507E -308 до -1.79769E+308

-Dbl_min

-Dbl_max

Тип на данните ограничения в съвременния C ++

Горният макро подход за горната и долната граница на типа данни е старият подход на C език, наследен от C ++. Но C ++ също има свой метод за предоставяне на програмисти със същата информация.

C ++ предлага числово_лимити<> класен шаблон като модерна алтернатива на тези макроси. Този шаблон предоставя по-обектно-ориентиран подход за достъп до ограничения за типа на данните. Тя е дефинирана вътре в Заглавен файл.

Нека да разгледаме пример:

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


Изход

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

Препоръчва се да се използва този подход, за да се намери горната и долната граница на типа данни вместо макроси, тъй като е по-безопасен и четен в сравнение с макро-базирания подход.