logo

Datatypeområder og deres makroer i C ++

De fleste av tidene i konkurrerende programmering er det behov for å tilordne variabelen den maksimale eller minimumsverdien som datatypen kan inneholde, men å huske et så stort og presist antall kommer ut som en vanskelig jobb. Derfor har C ++ visse makroer for å representere disse tallene slik at disse kan tilordnes direkte til variabelen uten å faktisk skrive hele tallet.

De Headerfil i C ++ definerer makroer som representerer de øvre og nedre grensene for heltalldatatyper og Definerer makroene for float og doble grenser. Disse makroene lar deg enkelt tilordne disse ekstreme verdiene til variabler uten manuelt å skrive dem ut.



La oss se på et eksempel:

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


Produksjon

hvordan gi nytt navn til en katalog linux
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

Datatyper og deres rekkevidde makroer

En liste over noen av datatypemakroene er nevnt nedenfor:



Datatype

Spekter

Makro for min verdi



Makro for maks verdi

røye

-128 til +127

Char_min

Char_max

Kort røye

-128 til +127

Schar_min

Schar_max

usignert røye

0 til 255

-

Flying_max

Kort int

-32768 til +32767

Shrt_min

Shrt_max

usignert kort int

0 til 65535

-

Ushrt_max

int

-2147483648 til +2147483647

Int_min

Int_max

usignert int

0 til 4294967295

-

Uint_max

Lang int

-9223372036854775808 til +9223372036854775807

Long_min

navn på by i usa

Long_max

usignert lang int

0 til 18446744073709551615

-

Usong_max

Lang lang int

-9223372036854775808 til +9223372036854775807

Skip_min

Llong_max

usignert lang lang int

0 til 18446744073709551615

-

Ullong_Max

flyte

1.17549E-38 til 3.40282E+38

Flt_min

primtall i java

Flt_max

Float (negativ)

-1.17549E -38 til -3.40282e+38

-Lt_min

-Flt_max

dobbelt

2.22507E-308 til 1.79769E+308

Dbl_min

Dbl_max

Dobbelt (negativ)

-2.22507e -308 til -1.79769e+308

-Dbl_min

-Dbl_max

Datatypegrenser i moderne C ++

Ovennevnte makrotilnærming for de øvre og nedre grensene for datatypen er den gamle C -språktilnærmingen som er arvet av C ++. Men C ++ har også sin egen metode for å gi programmerere den samme informasjonen.

C ++ tilbyr numeric_limits<> Klassemal som et moderne alternativ til disse makroene. Denne malen gir en mer objektorientert tilnærming for å få tilgang til datatypens grenser. Det er definert inne i headerfil.

La oss se på et eksempel:

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


Produksjon

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

Det anbefales å bruke denne tilnærmingen for å finne de øvre og nedre grensene for datatypen i stedet for makroer, da den er mer type trygt og lesbar sammenlignet med den makrobaserte tilnærmingen.