Већина времена у такмичарском програмирању постоји потреба да се променљива додијели максималну или минималну вредност коју тип података може да држи, али сећање на тако велики и прецизан број излази на тежак посао. Због тога Ц ++ има одређене макронаредбу да представљају ове бројеве како би се они могли директно доделити променљивој без да упише цео број.
Тхе
Погледајмо пример:
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; }
Излаз
саира бану глумац
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 | Цхар_мин | Цхар_мак |
кратак цхар | -128 до +127 | Сцхар_мин | Сцхар_мак |
непотписани цхар | 0 до 255 | - | Флиинг_Мак |
кратак инт | -32768 до +32767 | Схрт_мин | Схрт_мак |
непотписани кратки инт | 0 до 65535 | - | Усхрт_мак |
уметнути | -2147483648 до +2147483647 | Инт_мин | Инт_мак |
непотписани инт | 0 до 4294967295 | - | Уинт_мак |
дуги инт | -9223372036854775808 до +9223372036854775807 | Лонг_мин | Лонг_мак |
ненаписани дуги инт | 0 до 18446744073709551615 | - | Усонг_мак |
дуги дуги | -9223372036854775808 до +9223372036854775807 | Схип_мин инт у низу | Ллонг_мак |
недовољни дуги дугачак инт | 0 до 18446744073709551615 | - | Уллонг_мак |
пловак | 1.17549Е-38 до 3.40282Е + 38 | Флт_мин | Флт_мак |
Флоат (негативно) | -1.17549Е-38 до -3.40282е + 38 | -ЛТ_МИН 'примов алгоритам' | -Флт_мак |
удвостручити | 2.22507Е-308 до 1.79769Е + 308 | Дбл_мин | Дбл_мак |
Двоструки (негативан) | -2.22507Е-308 до -1.79769Е + 308 | -Дбл_мин | -Дбл_мак |
Ограничења типа података у модерном Ц ++
Горњи макро приступ горњим и доњим границама типа података је стари Ц језик Ц наслеђен Ц ++. Али Ц ++ такође има своју методу да пруже програмере са истим информацијама.
Ц ++ нуди нумериц_лимитс<> Теблови класе као модерне алтернативе овим макроима. Овај предложак пружа више објектно оријентисано приступ за приступ ограничењима типа података. Дефинише се унутар
Погледајмо пример:
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
Препоручује се употреба овог приступа да бисте пронашли горње и доње границе типа података уместо макронаредби, јер је више сигурна и читљива у поређењу са макро-системом.