logo

Datatype varierer og deres makroer i C ++

De fleste af de tidspunkter inden for konkurrencedygtig programmering er der et behov for at tildele variablen den maksimale eller minimumsværdi, som datatypen kan indeholde, men at huske et så stort og præcist antal kommer til at være et vanskeligt job. Derfor har C ++ visse makroer til at repræsentere disse tal, så disse kan tildeles direkte til variablen uden faktisk at skrive hele nummeret.

De Header -fil i C ++ definerer makroer, der repræsenterer de øvre og nedre grænser for heltaldatatyper og Definerer makroerne for float og dobbeltgrænser. Disse makroer giver dig mulighed for nemt at tildele disse ekstreme værdier til variabler uden manuelt at skrive dem ud.



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


Produktion

hvordan man omdøber en mappe 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 række makroer

En liste over nogle af makroerne af datatypen er nævnt nedenfor:



Datatype

Rækkevidde

Makro til minværdi



Makro til maksimal værdi

char

-128 til +127

CHAR_MIN

Char_max

Kort char

-128 til +127

Schar_min

Schar_max

usigneret char

0 til 255

--

Flying_max

kort int

-32768 til +32767

SHRT_MIN

SHRT_MAX

usigneret kort int

0 til 65535

--

Ushrt_max

int

-2147483648 til +2147483647

Int_min

Int_max

usigneret int

0 til 4294967295

--

Uint_max

lang int

-9223372036854775808 til +9223372036854775807

Long_min

navn by i usa

Long_max

usigneret lang int

0 til 18446744073709551615

--

Ussang_max

lang lang int

-9223372036854775808 til +9223372036854775807

Ship_min

Llong_max

usigneret lang lang int

0 til 18446744073709551615

--

Ullong_max

flyde

1.17549E-38 til 3.40282E+38

Flt_min

hvilken størrelse er min skærm

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

Datatypegrænser i moderne C ++

Ovenstående makro -tilgang til de øvre og nedre grænser for datatypen er den gamle C -sprogtilgang, der er arvet af C ++. Men C ++ har også sin egen metode til at give programmerere de samme oplysninger.

C ++ tilbyder numeric_limits<> Klasseskabelon som et moderne alternativ til disse makroer. Denne skabelon giver en mere objektorienteret tilgang til adgang til datatypegrænser. Det er defineret inde i Header -fil.

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


Produktion

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 at bruge denne tilgang til at finde de øvre og nedre grænser for datatypen i stedet for makroer, da den er mere type sikker og læsbar sammenlignet med den makrobaserede tilgang.