logo

C++-gegevenstypen

Alle variabelen gebruik het gegevenstype tijdens de aangifte om het type gegevens dat moet worden opgeslagen te beperken. Daarom kunnen we zeggen dat gegevenstypen worden gebruikt om de variabelen te vertellen welk type gegevens ze kunnen opslaan. Telkens wanneer een variabele in C++ wordt gedefinieerd, wijst de compiler wat geheugen toe aan die variabele op basis van het gegevenstype waarmee deze is gedeclareerd. Elk gegevenstype vereist een andere hoeveelheid geheugen.

C++ ondersteunt een grote verscheidenheid aan gegevenstypen en de programmeur kan het gegevenstype selecteren dat geschikt is voor de behoeften van de toepassing. Gegevenstypen specificeren de grootte en typen waarden die moeten worden opgeslagen. De opslagrepresentatie en machine-instructies voor het manipuleren van elk gegevenstype verschillen echter van machine tot machine, hoewel C++-instructies op alle machines identiek zijn.

C++ ondersteunt de volgende gegevenstypen:



  1. Primair of Ingebouwd of Fundamenteel gegevenstype
  2. Afgeleide gegevenstypen
  3. Door de gebruiker gedefinieerde gegevenstypen

Gegevenstypen in C++

Gegevenstypen in C++ zijn hoofdzakelijk onderverdeeld in 3 typen:

1. Primitieve gegevenstypen : Deze gegevenstypen zijn ingebouwde of vooraf gedefinieerde gegevenstypen en kunnen rechtstreeks door de gebruiker worden gebruikt om variabelen te declareren. voorbeeld: int, char, float, bool, etc. Primitieve gegevenstypen die beschikbaar zijn in C++ zijn:

  • Geheel getal
  • Karakter
  • Booleaans
  • Drijvend punt
  • Dubbele drijvende komma
  • Waardeloos of ongeldig
  • Breed karakter

2. Afgeleide gegevenstypen: Functie

  • Array
  • Wijzer
  • Referentie
  • 3. Abstracte of door de gebruiker gedefinieerde gegevenstypen : Klas

  • Structuur

  • Klas
  • Unie
  • Klas
  • Opsomming
  • Typedef gedefinieerd gegevenstype
  • Primitieve gegevenstypen

      Klas
    • Geheel getal : Het trefwoord dat wordt gebruikt voor gegevenstypen met gehele getallen is int . Gehele getallen vereisen doorgaans 4 bytes geheugenruimte en variëren van -2147483648 tot 2147483647.
    • Karakter : Tekengegevenstype wordt gebruikt voor het opslaan van tekens. Het trefwoord dat wordt gebruikt voor het tekengegevenstype is verkoold . Tekens vereisen doorgaans 1 byte geheugenruimte en variëren van -128 tot 127 of 0 tot 255.
    • Booleaans : Booleaans gegevenstype wordt gebruikt voor het opslaan van Booleaanse of logische waarden. Een Booleaanse variabele kan beide opslaan WAAR of vals . Het sleutelwoord dat wordt gebruikt voor het Booleaanse gegevenstype is bool .
    • Drijvend punt : Het gegevenstype Drijvende komma wordt gebruikt voor het opslaan van drijvende-kommawaarden of decimale waarden met enkele precisie. Het trefwoord dat wordt gebruikt voor het gegevenstype met drijvende komma is vlot . Float-variabelen vereisen doorgaans 4 bytes geheugenruimte.
    • Dubbele drijvende komma : Het gegevenstype Double Floating Point wordt gebruikt voor het opslaan van drijvende-kommawaarden of decimale waarden met dubbele precisie. Het trefwoord dat wordt gebruikt voor het gegevenstype met dubbele drijvende komma is dubbele . Dubbele variabelen vereisen doorgaans 8 bytes geheugenruimte.
    • leegte : Ongeldig betekent zonder enige waarde. Het void-gegevenstype vertegenwoordigt een waardeloze entiteit. Voor functies die geen waarde retourneren, wordt een ongeldig gegevenstype gebruikt.
    • Klas
    • Breed karakter : Breed karakter gegevenstype is ook een tekengegevenstype, maar dit gegevenstype heeft een grotere omvang dan het normale 8-bits gegevenstype. Vertegenwoordigd door wchar_t . Het is over het algemeen 2 of 4 bytes lang.
    • sizeof()-operator: sizeof()-operator wordt gebruikt om het aantal bytes te vinden dat wordt ingenomen door een variabele/gegevenstype in het computergeheugen.

    Voorbeeld:

    int m, x[50];

    uit<

    uit<

    De grootte van variabelen kan afwijken van de grootte die in de bovenstaande tabel wordt weergegeven, afhankelijk van de compiler en de computer die u gebruikt.

    C++




    // C++ Program to Demonstrate the correct size> // of various data types on your computer.> #include> using> namespace> std;> int> main()> {> >cout <<>'Size of char : '> <<>sizeof>(>char>) << endl;> >cout <<>'Size of int : '> <<>sizeof>(>int>) << endl;> >cout <<>'Size of long : '> <<>sizeof>(>long>) << endl;> >cout <<>'Size of float : '> <<>sizeof>(>float>) << endl;> >cout <<>'Size of double : '> <<>sizeof>(>double>) << endl;> >return> 0;> }>

    >

    >

    Uitvoer

    Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>

    Tijdcomplexiteit: O(1)

    Ruimtecomplexiteit: O(1)

    Gegevenstypemodificatoren

    Zoals de naam al doet vermoeden, worden datatype-modifiers gebruikt met ingebouwde datatypen om de lengte van de gegevens die een bepaald datatype kan bevatten, te wijzigen.

    Modificatoren in C++

    Modifiers voor gegevenstypes die beschikbaar zijn in C++ zijn:

    • Ondertekend
    • Niet ondertekend
    • Kort
    • Lang

    De onderstaande tabel geeft een overzicht van de gewijzigde grootte en het bereik van ingebouwde datatypes in combinatie met de typemodifiers:

    Data type

    Grootte (in bytes)

    Bereik

    korte int

    2

    -32.768 tot 32.767

    niet-ondertekende korte int

    2

    0 tot 65.535

    niet ondertekend int

    4

    0 tot 4.294.967.295

    int

    4

    -2.147.483.648 tot 2.147.483.647

    waarom string onveranderlijk in Java

    lang int

    4

    -2.147.483.648 tot 2.147.483.647

    niet-ondertekend lange int

    4

    0 tot 4.294.967.295

    lang lang int

    8

    -(2^63) tot (2^63)-1

    niet-ondertekend lang lang int

    8

    0 tot 18.446.744.073.709.551.615

    ondertekende char

    1

    -128 tot 127

    Ongetekend char

    1

    0 tot 255

    vlot

    4

    -3,4×10^38 tot 3,4×10^38

    dubbele

    8

    -1,7×10^308 tot 1,7×10^308

    lange dubbele

    12

    -1,1×10^4932 tot 1,1×10^4932

    wchar_t

    2 of 4

    1 breed karakter

    Opmerking : Bovenstaande waarden kunnen variëren van compiler tot compiler. In het bovenstaande voorbeeld hebben we GCC 32 bit beschouwd.
    We kunnen de grootte van alle gegevenstypen weergeven door de operator sizeof() te gebruiken en het trefwoord van het gegevenstype door te geven als argument voor deze functie, zoals hieronder weergegeven:

    Om het bereik van gegevenstypen te zien, raadpleegt u het volgende diagram

    Opmerking: syntaxis header-bestand is gedefinieerd om het bereik van fundamentele gegevenstypen te vinden. Niet-ondertekende modifiers hebben een minimumwaarde van nul. Er zijn dus geen macroconstanten gedefinieerd voor de niet-ondertekende minimumwaarde.

    Macroconstanten

    Naam

    Expresseert

    CHAR_MIN

    De minimumwaarde voor een object van het type char

    CHAR_MAX

    Maximale waarde voor een object van het type char

    SCHAR_MIN

    De minimumwaarde voor een object van het type Signed char

    SCHAR_MAX

    Maximale waarde voor een object van het type Signed char

    VLUCHT_MAX

    Maximale waarde voor een object van het type Unsigned char

    CHAR_BIT

    Aantal bits in een char-object

    MB_LEN_MAX

    Maximaal aantal bytes in een multi-byteteken

    SHRT_MIN

    De minimumwaarde voor een object van het type short int

    SHRT_MAX

    Maximale waarde voor een object van het type short int

    USHRT_MAX

    Maximale waarde voor een object van het type Unsigned short int

    INT_MIN

    De minimumwaarde voor een object van het type int

    INT_MAX

    Maximale waarde voor een object van het type int

    UINT_MAX

    Maximale waarde voor een object van het type Unsigned int

    LONG_MIN

    De minimumwaarde voor een object van het type long int

    LONG_MAX

    Maximale waarde voor een object van het type long int

    HEAD_MAX

    Maximale waarde voor een object van het type Unsigned long int

    SHIP_MIN

    De minimumwaarde voor een object van het type long long int

    LLONG_MAX

    Maximale waarde voor een object van het type long long int

    ULLONG_MAX

    Maximale waarde voor een object van het type Unsigned long long int

    De werkelijke waarde hangt af van de specifieke systeem- en bibliotheekimplementatie, maar zal de beperkingen van deze typen op het doelplatform weerspiegelen. LLONG_MIN, LLONG_MAX en ULLONG_MAX zijn gedefinieerd voor bibliotheken die voldoen aan de C-standaard van 1999 of later (die sinds 2011 alleen de C++-standaard omvat: C++11).

    C++ Programma om het bereik van gegevenstypen te vinden met behulp van macroconstanten

    Voorbeeld:

    C++




    // C++ program to Demonstrate the sizes of data types> #include> #include> using> namespace> std;> int> main()> {> >cout <<>'Size of char : '> <<>sizeof>(>char>) <<>' byte'> ><< endl;> >cout <<>'char minimum value: '> << CHAR_MIN << endl;> >cout <<>'char maximum value: '> << CHAR_MAX << endl;> >cout <<>'Size of int : '> <<>sizeof>(>int>) <<>' bytes'> ><< endl;> >cout <<>'Size of short int : '> <<>sizeof>(>short> int>)> ><<>' bytes'> << endl;> >cout <<>'Size of long int : '> <<>sizeof>(>long> int>)> ><<>' bytes'> << endl;> >cout <<>'Size of signed long int : '> ><<>sizeof>(>signed> long> int>) <<>' bytes'> << endl;> >cout <<>'Size of unsigned long int : '> ><<>sizeof>(unsigned>long> int>) <<>' bytes'> << endl;> >cout <<>'Size of float : '> <<>sizeof>(>float>) <<>' bytes'> ><< endl;> >cout <<>'Size of double : '> <<>sizeof>(>double>)> ><<>' bytes'> << endl;> >cout <<>'Size of wchar_t : '> <<>sizeof>(>wchar_t>)> ><<>' bytes'> << endl;> >return> 0;> }>

    >

    >

    Uitvoer

    Size of char : 1 byte char minimum value: -128 char maximum value: 127 Size of int : 4 bytes Size of short int : 2 bytes Size of long int : 8 bytes Size of signed long int : 8 bytes Size of unsigned long int : 8 bytes Size of float : 4 bytes Size of double : 8 bytes Size of wchar_t : 4 bytes>

    Tijdcomplexiteit: O(1)

    Ruimtecomplexiteit: O(1)

    C++




    #include> #include> using> namespace> std;> int> main() {> >// Integer data types> >int> a = 10;> >short> b = 20;> >long> c = 30;> >long> long> d = 40;> >cout <<>'Integer data types: '> << endl;> >cout <<>'int: '> << a << endl;> >cout <<>'short: '> << b << endl;> >cout <<>'long: '> << c << endl;> >cout <<>'long long: '> << d << endl;> > >// Floating-point data types> >float> e = 3.14f;> >double> f = 3.141592;> >long> double> g = 3.14159265358979L;> >cout <<>'Floating-point data types: '> << endl;> >cout <<>'float: '> << e << endl;> >cout <<>'double: '> << f << endl;> >cout <<>'long double: '> << g << endl;> > >// Character data types> >char> h =>'a'>;> >wchar_t> i = L>'b'>;> >char16_t j = u>'c'>;> >char32_t k = U>'d'>;> >cout <<>'Character data types: '> << endl;> >cout <<>'char: '> << h << endl;> >wcout <<>'wchar_t: '> << i << endl;> >cout <<>'char16_t: '> << j << endl;> >cout <<>'char32_t: '> << k << endl;> > >// Boolean data type> >bool> l =>true>;> >bool> m =>false>;> >cout <<>'Boolean data type: '> << endl;> >cout <<>'true: '> << l << endl;> >cout <<>'false: '> << m << endl;> > >// String data type> >string n =>'Hello, world!'>;> >cout <<>'String data type: '> << endl;> >cout << n << endl;> > >return> 0;> }>

    >

    >

    Uitvoer

    Integer data types: int: 10 short: 20 long: 30 long long: 40 Floating-point data types: float: 3.14 double: 3.14159 long double: 3.14159 Character data types: char: a wchar_t: b char16_t: 99 char32_t: 100 Boolean data type: true: 1 false: 0 String data type: Hello, world!>

    Dit programma declareert variabelen van verschillende gegevenstypen, wijst er waarden aan toe en drukt vervolgens hun waarden af.

    De gegevenstypen met gehele getallen omvatten int, short, long en long long. Deze gegevenstypen vertegenwoordigen hele getallen van verschillende grootte.

    De gegevenstypen met drijvende komma omvatten float, double en long double. Deze gegevenstypen vertegenwoordigen reële getallen met verschillende nauwkeurigheidsniveaus.

    De tekengegevenstypen omvatten char, wchar_t, char16_t en char32_t. Deze gegevenstypen vertegenwoordigen individuele tekens van verschillende groottes.

    Het booleaanse gegevenstype is een eenvoudig gegevenstype dat slechts één van twee waarden kan hebben: waar of onwaar.

    Het stringgegevenstype is een reeks tekens. In dit programma gebruiken we de klasse string om een ​​stringvariabele te declareren en er een waarde aan toe te wijzen.

    Voordelen :

    Gegevenstypen bieden een manier om gegevens in een programma te categoriseren en te organiseren, waardoor het gemakkelijker te begrijpen en te beheren is.
    Elk gegevenstype heeft een specifiek bereik aan waarden dat het kan bevatten, waardoor een nauwkeurigere controle mogelijk is over het type gegevens dat wordt opgeslagen.
    Gegevenstypen helpen fouten en bugs in een programma te voorkomen door strikte regels af te dwingen over hoe gegevens kunnen worden gebruikt en gemanipuleerd.
    C++ biedt een breed scala aan gegevenstypen, waardoor ontwikkelaars het beste type voor een specifieke taak kunnen kiezen.

    Nadelen :

    Het gebruik van het verkeerde gegevenstype kan leiden tot onverwacht gedrag en fouten in een programma.
    Sommige gegevenstypen, zoals lange doubles of char-arrays, kunnen een grote hoeveelheid geheugen in beslag nemen en de prestaties beïnvloeden als ze overmatig worden gebruikt.
    Het complexe typesysteem van C++ kan het voor beginners moeilijk maken om de taal effectief te leren en te gebruiken.
    Het gebruik van gegevenstypen kan extra complexiteit en breedsprakigheid aan een programma toevoegen, waardoor het moeilijker te lezen en te begrijpen is.