Тип података распони и њихови макроики у Ц ++

Већина времена у такмичарском програмирању постоји потреба да се променљива додијели максималну или минималну вредност коју тип података може да држи, али сећање на тако велики и прецизан број излази на тежак посао. Због тога Ц ++ има одређене макронаредбу да представљају ове бројеве како би се они могли директно доделити променљивој без да упише цео број.

Тхе датотека заглавља у Ц ++ дефинише макроике које представљају горњу и доњу границу целих врста података и Дефинише макрое за плутање и двоструке границе. Ови макронире омогућавају вам да лако доделите ове екстремне вредности променљивим без да их ручно куцате.

Погледајмо пример:

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

Препоручује се употреба овог приступа да бисте пронашли горње и доње границе типа података уместо макронаредби, јер је више сигурна и читљива у поређењу са макро-системом.