Intervalli di tipi di dati e relative macro in C++

La maggior parte delle volte nella programmazione competitiva è necessario assegnare alla variabile il valore massimo o minimo che il tipo di dati può contenere, ma ricordare un numero così grande e preciso risulta essere un lavoro difficile. Pertanto il C++ dispone di determinate macro per rappresentare questi numeri in modo che questi possano essere assegnati direttamente alla variabile senza effettivamente digitare l'intero numero.

IL file di intestazione in C++ definisce le macro che rappresentano i limiti superiore e inferiore dei tipi di dati interi e definisce le macro per i limiti float e double. Queste macro consentono di assegnare facilmente questi valori estremi alle variabili senza digitarli manualmente.

Diamo un'occhiata ad un esempio:

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  ;   }   


Produzione

 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

Tipi di dati e relative macro di intervallo

Di seguito è riportato un elenco di alcune macro dei tipi di dati:

Tipo di dati

Allineare

Macro per valore minimo

Macro per il valore massimo

car

da -128 a +127

Caratteri_min

CAR_MAX

carattere breve

da -128 a +127

SCAR_MIN

SCAR_MAX

carattere non firmato

da 0 a 255

--

Volare_max

breve int

da -32768 a +32767

SHRT_MIN

SHRT_MAX

int breve senza segno

da 0 a 65535

--

USHRT_MAX

int

-2147483648 a +2147483647

INT_MIN

INT_MAX

intero senza segno

0 al 4294967295

--

UINT_MAX

lungo int

-9223372036854775808 a +9223372036854775807

LUNGO_MIN

LUNGO_MAX

int lungo senza segno

da 0 a 18446744073709551615

--

Usong_Max

lungo lungo int

-9223372036854775808 a +9223372036854775807

Spedizione_min

LLONG_MAX

senza segno lungo lungo int

da 0 a 18446744073709551615

--

ULLONG_MAX

galleggiante

da 1.17549e-38 a 3.40282e+38

Flt_min

FLT_MAX

galleggiante (negativo)

Da -1.17549e-38 a -3.40282e+38

-Lt_min

-FLT_MAX

raddoppiare

da 2.22507e-308 a 1.79769e+308

DBL_MIN

DBL_MAX

doppio (negativo)

Da -2,22507e-308 a -1,79769e+308

-DBL_MIN

-DBL_MAX

Limiti dei tipi di dati nel C++ moderno

L'approccio macro di cui sopra per i limiti superiore e inferiore del tipo di dati è il vecchio approccio del linguaggio C ereditato da C++. Ma anche il C++ ha il proprio metodo per fornire ai programmatori le stesse informazioni.

Il C++ offre il limiti_numerici <> modello di classe come alternativa moderna a queste macro. Questo modello fornisce un approccio più orientato agli oggetti per accedere ai limiti dei tipi di dati. È definito all'interno del file di intestazione.

Diamo un'occhiata ad un esempio:

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  ;   }   


Produzione

 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

Si consiglia di utilizzare questo approccio per trovare i limiti superiore e inferiore del tipo di dati anziché delle macro poiché è più sicuro e leggibile rispetto all'approccio basato su macro.