Діапазони типу даних та їх макроси в 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 < < ' 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 ; }
Випуск
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 ++ також має власний метод надання програмістам однакову інформацію.
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 < < ' 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 ; }
Випуск
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Рекомендується використовувати цей підхід для пошуку верхніх та нижніх меж типу даних замість макросів, оскільки він є більш безпечним та читабельним порівняно з макро-на основі підходу.