Тип података распони и њихови макроики у Ц ++
Већина времена у такмичарском програмирању постоји потреба да се променљива додијели максималну или минималну вредност коју тип података може да држи, али сећање на тако велики и прецизан број излази на тежак посао. Због тога Ц ++ има одређене макронаредбу да представљају ове бројеве како би се они могли директно доделити променљивој без да упише цео број.
Тхе
Погледајмо пример:
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 | Цхар_мин | Цхар_мак |
| кратак цхар | -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 < < ' 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Препоручује се употреба овог приступа да бисте пронашли горње и доње границе типа података уместо макронаредби, јер је више сигурна и читљива у поређењу са макро-системом.