C - Gegevenstypen
Gegevenstypen in c verwijzen naar een uitgebreid systeem dat wordt gebruikt voor het declareren van variabelen of functies van verschillende typen. Het type variabele bepaalt hoeveel ruimte deze inneemt in de opslag en hoe het opgeslagen bitpatroon wordt geïnterpreteerd.
De typen in C kunnen als volgt worden ingedeeld −
Sr.nr. | Typen en beschrijving |
---|---|
1 | Basistypen Het zijn rekenkundige typen en worden verder ingedeeld in:(a) typen integers en (b) typen met drijvende komma. |
2 | Opsomde typen Het zijn weer rekenkundige typen en ze worden gebruikt om variabelen te definiëren die alleen bepaalde discrete gehele getallen in het programma kunnen toewijzen. |
3 | Het type ongeldig De typespecificatie void geeft aan dat er geen waarde beschikbaar is. |
4 | Afgeleide typen Ze omvatten (a) Pointer-typen, (b) Array-typen, (c) Structuurtypen, (d) Union-typen en (e) Functietypen. |
De arraytypen en structuurtypen worden gezamenlijk de aggregatietypen genoemd. Het type van een functie specificeert het type van de geretourneerde waarde van de functie. We zullen de basistypen in het volgende gedeelte zien, terwijl andere typen in de komende hoofdstukken zullen worden behandeld.
Integer-typen
De volgende tabel geeft de details van standaard integer-typen met hun opslaggroottes en waardebereiken −
Type | Opslaggrootte | Waardebereik |
---|---|---|
char | 1 byte | -128 tot 127 of 0 tot 255 |
niet-ondertekend teken | 1 byte | 0 tot 255 |
ondertekend teken | 1 byte | -128 tot 127 |
int | 2 of 4 bytes | -32.768 tot 32.767 of -2.147.483.648 tot 2.147.483.647 |
unsigned int | 2 of 4 bytes | 0 tot 65.535 of 0 tot 4.294.967.295 |
kort | 2 bytes | -32.768 tot 32.767 |
unsigned short | 2 bytes | 0 tot 65.535 |
lang | 8 bytes of (4bytes voor 32-bits besturingssysteem) | -9223372036854775808 naar 9223372036854775807 |
unsigned long | 8 bytes | 0 tot 18446744073709551615 |
Om de exacte grootte van een type of een variabele op een bepaald platform te krijgen, kunt u de sizeof gebruiken exploitant. De uitdrukkingen sizeof(type) geeft de opslaggrootte van het object of typt in bytes. Hieronder is een voorbeeld gegeven om de grootte van verschillende typen op een machine te krijgen met behulp van verschillende constante gedefinieerd in het headerbestand limit.h −
Live demo#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("CHAR_BIT : %d\n", CHAR_BIT); printf("CHAR_MAX : %d\n", CHAR_MAX); printf("CHAR_MIN : %d\n", CHAR_MIN); printf("INT_MAX : %d\n", INT_MAX); printf("INT_MIN : %d\n", INT_MIN); printf("LONG_MAX : %ld\n", (long) LONG_MAX); printf("LONG_MIN : %ld\n", (long) LONG_MIN); printf("SCHAR_MAX : %d\n", SCHAR_MAX); printf("SCHAR_MIN : %d\n", SCHAR_MIN); printf("SHRT_MAX : %d\n", SHRT_MAX); printf("SHRT_MIN : %d\n", SHRT_MIN); printf("UCHAR_MAX : %d\n", UCHAR_MAX); printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX); printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX); printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX); return 0; }
Wanneer u het bovenstaande programma compileert en uitvoert, levert dit het volgende resultaat op onder Linux −
CHAR_BIT : 8 CHAR_MAX : 127 CHAR_MIN : -128 INT_MAX : 2147483647 INT_MIN : -2147483648 LONG_MAX : 9223372036854775807 LONG_MIN : -9223372036854775808 SCHAR_MAX : 127 SCHAR_MIN : -128 SHRT_MAX : 32767 SHRT_MIN : -32768 UCHAR_MAX : 255 UINT_MAX : 4294967295 ULONG_MAX : 18446744073709551615 USHRT_MAX : 65535
Drijvende-kommatypes
De volgende tabel geeft de details van standaard drijvende-kommatypes met opslaggroottes en waardebereiken en hun precisie −
Type | Opslaggrootte | Waardebereik | Precisie |
---|---|---|---|
zweven | 4 bytes | 1.2E-38 tot 3.4E+38 | 6 decimalen |
dubbel | 8 bytes | 2.3E-308 tot 1.7E+308 | 15 decimalen |
lange dubbele | 10 bytes | 3.4E-4932 tot 1.1E+4932 | 19 decimalen |
Het headerbestand float.h definieert macro's waarmee u deze waarden en andere details over de binaire weergave van reële getallen in uw programma's kunt gebruiken. Het volgende voorbeeld drukt de opslagruimte af die wordt ingenomen door een float-type en zijn bereikwaarden −
Live demo#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("Storage size for float : %d \n", sizeof(float)); printf("FLT_MAX : %g\n", (float) FLT_MAX); printf("FLT_MIN : %g\n", (float) FLT_MIN); printf("-FLT_MAX : %g\n", (float) -FLT_MAX); printf("-FLT_MIN : %g\n", (float) -FLT_MIN); printf("DBL_MAX : %g\n", (double) DBL_MAX); printf("DBL_MIN : %g\n", (double) DBL_MIN); printf("-DBL_MAX : %g\n", (double) -DBL_MAX); printf("Precision value: %d\n", FLT_DIG ); return 0; }
Wanneer u het bovenstaande programma compileert en uitvoert, levert dit het volgende resultaat op onder Linux −
Storage size for float : 4 FLT_MAX : 3.40282e+38 FLT_MIN : 1.17549e-38 -FLT_MAX : -3.40282e+38 -FLT_MIN : -1.17549e-38 DBL_MAX : 1.79769e+308 DBL_MIN : 2.22507e-308 -DBL_MAX : -1.79769e+308 Precision value: 6
Het lege type
Het void type geeft aan dat er geen waarde beschikbaar is. Het wordt in drie soorten situaties gebruikt −
Sr.nr. | Typen en beschrijving |
---|---|
1 | Functie keert terug als ongeldig Er zijn verschillende functies in C die geen waarde retourneren of je kunt zeggen dat ze ongeldig zijn. Een functie zonder retourwaarde heeft het retourtype void. Bijvoorbeeld ongeldige exit (int status); |
2 | Functieargumenten als ongeldig Er zijn verschillende functies in C die geen enkele parameter accepteren. Een functie zonder parameter kan een leegte accepteren. Bijvoorbeeld int rand(void); |
3 | Aanwijzingen om te annuleren Een aanwijzer van het type void * vertegenwoordigt het adres van een object, maar niet het type. Bijvoorbeeld een geheugentoewijzingsfunctie void *malloc( size_t size ); geeft een pointer to void terug die naar elk datatype kan worden gecast. |
C Taal
- Schakeltypes
- C#-variabelen en (primitieve) gegevenstypen
- C++-gegevenstypen
- C Gegevenstypen
- Python-gegevenstypen
- Java-gegevenstypen (primitief)
- C Variabele, gegevenstypen, constanten
- 5 verschillende soorten datacenters [met voorbeelden]
- 8 verschillende soorten cloud computing in 2021
- 8 verschillende soorten datalekken met voorbeelden
- Gegevensabstractie in C++