logo

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

Більшість разів у конкурентному програмуванні необхідно призначити змінну максимальне або мінімальне значення, яке тип даних може мати, але запам'ятовування такого великого і точного числа виявляється важкою роботою. Тому C ++ має певні макроси, щоб представити ці числа, щоб вони могли бути безпосередньо віднесені до змінної без фактичного введення всього числа.

З Файл заголовка в 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; } 


Випуск

java int для подвоєння
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

короткий інт

-32768 до +32767

SHRT_MIN

Shrt_max

неподписаний короткий int

0 до 65535

-

Ushrt_max

інт

-2147483648 до +2147483647

Int_min

Int_max

Непідписаний INT

0 до 4294967295

-

Uint_max

довгий int

-9223372036854775808 до +9223372036854775807

Long_min

Long_max

неподписаний довгий int

0 до 18446744073709551615

-

Грайбах нормальної форми

Usong_max

довгий int

-9223372036854775808 до +9223372036854775807

SHIP_MIN

Llong_max

неподписаний довгий int

0 до 18446744073709551615

-

Ullong_max

плавати

1.17549e-38 до 3.40282e+38

Flt_min

Flt_max

поплавок (негативний)

-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 ++ також має власний метод надання програмістам однакову інформацію.

римська цифра від 1 до 100

C ++ пропонує numeric_limits<> Шаблон класу як сучасна альтернатива цим макросам. Цей шаблон забезпечує більш об'єктний підхід для доступу до меж типу даних. Він визначається всередині Файл заголовка.

Давайте подивимось на приклад:

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

Рекомендується використовувати цей підхід для пошуку верхніх та нижніх меж типу даних замість макросів, оскільки він є більш безпечним та читабельним порівняно з макро-на основі підходу.