Datatyper i C - Heltal, flydende punkt og ugyldigt forklaret

Datatyper i C

Der er flere forskellige måder at gemme data på C, og de er alle unikke fra hinanden. De typer data, som information kan lagres, kaldes datatyper. C er meget mindre tilgivende for datatyper end andre sprog. Som et resultat er det vigtigt at sikre, at du forstår de eksisterende datatyper, deres evner og deres begrænsninger.

Et særpræg på C's datatyper er, at de helt afhænger af den hardware, som du kører din kode på. En intpå din bærbare computer vil være mindre end en intpå en supercomputer, så det er vigtigt at kende begrænsningerne for den hardware, du arbejder på. Dette er også grunden til, at datatyperne er defineret som minimum - en intværdi, som du vil lære, er mindst -32767 til 32767: På visse maskiner vil den være i stand til at gemme endnu flere værdier, som dette.

Der er to kategorier, som vi kan opdele i: heltal og flydende tal. Heltal er hele tal. De kan være positive, negative eller nul. Tal som -321, 497, 19345 og -976812 er alle perfekt gyldige heltal, men 4.5 er ikke fordi 4.5 ikke er et heltal.

Flydende tal er tal med en decimal. Ligesom heltal er -321, 497, 19345 og -976812 alle gyldige, men nu er 4,5, 0,0004, -324,984 og andre ikke-heltal også gyldige.

C giver os mulighed for at vælge mellem flere forskellige muligheder med vores datatyper, fordi de alle er gemt på forskellige måder på computeren. Som et resultat er det vigtigt at være opmærksom på hver datatypes evner og begrænsninger for at vælge den mest passende.

Heltalsdatatyper

Tegn: char

charholder tegn - ting som bogstaver, tegnsætning og mellemrum. På en computer gemmes tegn som tal, så det charindeholder heltalsværdier, der repræsenterer tegn. Den aktuelle oversættelse er beskrevet af ASCII-standarden. Her er et praktisk bord til at kigge op på det.

Den faktiske størrelse, som alle andre datatyper i C, afhænger af den hardware, du arbejder på. Som minimum er det mindst 8 bits, så du har mindst 0 til 127. Alternativt kan du bruge signed chartil at få mindst -128 til 127.

Standard heltal: int

Mængden af ​​hukommelse, som en enkelt inttager, afhænger af hardwaren. Du kan dog forvente, at en intstørrelse er mindst 16 bit. Dette betyder, at det kan gemme værdier fra -32,768 til 32,767 eller mere afhængigt af hardware.

Som alle disse andre datatyper er der en unsignedvariant, der kan bruges. Det unsigned intkan være positivt og nul, men ikke negativt, så det kan gemme værdier fra 0 til 65.535 eller mere afhængigt af hardware.

Korte heltal: short

Dette bliver ikke brugt ofte, men det er godt at vide, at det eksisterer. Ligesom int kan den gemme -32768 til 32767. I modsætning til int er dette dog omfanget af dets evne. Overalt, hvor du kan bruge short, kan du bruge int.

Længere heltal: long

De longdata type butikker heltal gerne int, men giver en bredere vifte af værdier på bekostning af at tage mere hukommelse. Lange gemmer mindst 32 bits, hvilket giver den en rækkevidde på -2,147,483,648 til 2,147,483,647. Alternativt kan du bruge den unsigned longi et interval fra 0 til 4.294.967.295.

Endnu længere heltal: long long

Den long longdatatype er overkill til næsten enhver applikation, men C vil lade dig bruge det alligevel. Den er i stand til at gemme mindst −9.223.372.036.854.775.807 til 9.223.372.036.854.775.807. Alternativt kan du få endnu mere overkill med unsigned long long, hvilket giver dig mindst 0 til 18.446.744.073.709.551.615.

Datatyper med flydende nummer

Grundlæggende flydende nummer: float

float tager mindst 32 bit at gemme, men giver os 6 decimaler fra 1.2E-38 til 3.4E + 38.

Dobbelt: double

doubletager dobbelt hukommelsen for float (så mindst 64 bit). Til gengæld kan dobbelt give 15 decimaler fra 2.3E-308 til 1.7E + 308.

Få et bredere udvalg af dobbelt: long double

long doubletager mindst 80 bits. Som et resultat kan vi få 19 decimaler fra 3.4E-4932 til 1.1E + 4932.

Valg af den rigtige datatype

C gør det muligt at vælge datatypen og får os til at være meget specifikke og bevidste om den måde, vi gør dette på. Dette giver dig meget magt over din kode, men det er vigtigt at vælge den rigtige.

Generelt skal du vælge minimum til din opgave. Hvis du ved, at du tæller fra heltal 1 til 10, behøver du ikke lang tid, og du behøver ikke dobbelt. Hvis du ved, at du aldrig vil have negative værdier, skal du undersøge, om du bruger unsignedvarianterne af datatyperne. Ved at levere denne funktionalitet i stedet for at gøre det automatisk, er C i stand til at producere meget let og effektiv kode. Det er dog op til dig som programmør at forstå evner og begrænsninger og vælge i overensstemmelse hermed.

Vi kan bruge operatoren sizeof () til at kontrollere størrelsen på en variabel. Se følgende C-program for brugen af ​​de forskellige datatyper:

#include  int main() { int a = 1; char b ='G'; double c = 3.14; printf("Hello World!\n"); //printing the variables defined above along with their sizes printf("Hello! I am a character. My value is %c and " "my size is %lu byte.\n", b,sizeof(char)); //can use sizeof(b) above as well printf("Hello! I am an integer. My value is %d and " "my size is %lu bytes.\n", a,sizeof(int)); //can use sizeof(a) above as well printf("Hello! I am a double floating point variable." " My value is %lf and my size is %lu bytes.\n",c,sizeof(double)); //can use sizeof(c) above as well printf("Bye! See you soon. :)\n"); return 0; }

Produktion:

Hello World!Hello! I am a character. My value is G and my size is 1 byte. Hello! I am an integer. My value is 1 and my size is 4 bytes. Hello! I am a double floating point variable. My value is 3.140000 and my size is 8 bytes. Bye! See you soon. :)

Void-typen

Tomrumstypen angiver, at der ikke er nogen værdi tilgængelig. Det bruges i tre slags situationer:

1. Funktion vender tilbage som ugyldig

Der er forskellige funktioner i C, som ikke returnerer nogen værdi, eller du kan sige, at de returnerer ugyldige. En funktion uden returværdi har returtypen som ugyldig. For eksempel,void exit (int status);

2. Funktionsargumenter er ugyldige

Der er forskellige funktioner i C, som ikke accepterer nogen parameter. En funktion uden parameter kan acceptere et tomrum. For eksempel,int rand(void);

3. Henvisninger, der skal annulleres

En markør af typen void * repræsenterer adressen på et objekt, men ikke dets type. For eksempel void *malloc( size_t size);returnerer en hukommelsesallokeringsfunktion en markør til tomrum, der kan kastes til enhver datatype.