logo

C++ datatyper

Alle variabler bruge datatype under deklaration for at begrænse typen af ​​data, der skal lagres. Derfor kan vi sige, at datatyper bruges til at fortælle variablerne, hvilken type data de kan gemme. Når en variabel er defineret i C++, allokerer compileren noget hukommelse til denne variabel baseret på den datatype, som den er erklæret med. Hver datatype kræver en forskellig mængde hukommelse.

C++ understøtter en lang række datatyper, og programmøren kan vælge den datatype, der passer til applikationens behov. Datatyper angiver størrelsen og typerne af værdier, der skal gemmes. Lagerrepræsentation og maskininstruktioner til at manipulere hver datatype varierer fra maskine til maskine, selvom C++-instruktioner er identiske på alle maskiner.

C++ understøtter følgende datatyper:



  1. Primær eller Indbygget eller Grundlæggende datatype
  2. Afledte datatyper
  3. Brugerdefinerede datatyper

Datatyper i C++

Datatyper i C++ er hovedsageligt opdelt i 3 typer:

1. Primitive datatyper : Disse datatyper er indbyggede eller foruddefinerede datatyper og kan bruges direkte af brugeren til at erklære variabler. eksempel: int, char, float, bool osv. Primitive datatyper tilgængelige i C++ er:

  • Heltal
  • Karakter
  • Boolean
  • Flydende punkt
  • Dobbelt flydende punkt
  • Værdiløs eller ugyldig
  • Bred karakter

2. Afledte datatyper: Fungere

  • Array
  • Pointer
  • Reference
  • 3. Abstrakte eller brugerdefinerede datatyper : Klasse

  • Struktur

  • Klasse
  • Union
  • Klasse
  • Optælling
  • Typedef defineret Datatype
  • Primitive datatyper

      Klasse
    • Heltal : Nøgleordet, der bruges til heltalsdatatyper, er int . Heltal kræver typisk 4 bytes hukommelsesplads og spænder fra -2147483648 til 2147483647.
    • Karakter : Tegndatatypen bruges til lagring af tegn. Nøgleordet brugt til karakterdatatypen er char . Tegn kræver typisk 1 byte hukommelsesplads og spænder fra -128 til 127 eller 0 til 255.
    • Boolean : Boolsk datatype bruges til lagring af boolske eller logiske værdier. En boolsk variabel kan lagre enten rigtigt eller falsk . Nøgleordet brugt til den boolske datatype er bool .
    • Flydende punkt : Flydende kommadatatype bruges til lagring af enkeltpræcisions flydende decimalværdier eller decimalværdier. Nøgleordet, der bruges til datatypen floating-point, er flyde . Float-variabler kræver typisk 4 bytes hukommelsesplads.
    • Dobbelt flydende punkt : Dobbelt flydende komma datatype bruges til lagring af dobbelt præcision flydende decimalværdier eller decimalværdier. Nøgleordet, der bruges til datatypen med dobbelt flydende komma, er dobbelt . Dobbeltvariable kræver typisk 8 bytes hukommelsesplads.
    • ugyldig : Ugyldig betyder uden nogen værdi. void datatype repræsenterer en værdiløs enhed. En void datatype bruges til de funktioner, som ikke returnerer en værdi.
    • Klasse
    • Bred karakter : Bred karakter datatype er også en karakterdatatype, men denne datatype har en størrelse større end den normale 8-bit datatype. Repræsenteret af wchar_t . Den er generelt 2 eller 4 byte lang.
    • sizeof() operator: sizeof() operator bruges til at finde antallet af bytes optaget af en variabel/datatype i computerens hukommelse.

    Eksempel:

    int m, x[50];

    cout<

    cout<

    Størrelsen af ​​variabler kan være anderledes end dem, der er vist i ovenstående tabel, afhængigt af compileren og den computer, du bruger.

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

    >

    >

    Produktion

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

    Tidskompleksitet: O(1)

    Rumkompleksitet: O(1)

    Datatypemodifikatorer

    Som navnet antyder, bruges datatypemodifikatorer med indbyggede datatyper til at ændre længden af ​​data, som en bestemt datatype kan indeholde.

    Modifikatorer i C++

    Datatypemodifikatorer tilgængelige i C++ er:

    • Underskrevet
    • Usigneret
    • Kort
    • Lang

    Nedenstående tabel opsummerer den ændrede størrelse og rækkevidde af indbyggede datatyper, når de kombineres med typemodifikatorerne:

    Datatype

    Størrelse (i bytes)

    Rækkevidde

    kort int

    2

    -32.768 til 32.767

    usigneret kort int

    2

    0 til 65.535

    usigneret int

    4

    0 til 4.294.967.295

    int

    4

    -2.147.483.648 til 2.147.483.647

    forskel på tiger og løve

    lang int

    4

    -2.147.483.648 til 2.147.483.647

    usigneret lang int

    4

    0 til 4.294.967.295

    lang lang int

    8

    -(2^63) til (2^63)-1

    usigneret lang lang int

    8

    0 til 18.446.744.073.709.551.615

    signeret char

    1

    -128 til 127

    usigneret char

    1

    0 til 255

    flyde

    4

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

    dobbelt

    8

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

    lang dobbelt

    12

    -1,1×10^4932 til 1,1×10^4932

    wchar_t

    2 eller 4

    1 bred karakter

    Bemærk : Ovenstående værdier kan variere fra compiler til compiler. I ovenstående eksempel har vi overvejet GCC 32 bit.
    Vi kan vise størrelsen af ​​alle datatyperne ved at bruge sizeof() operatoren og sende nøgleordet for datatypen som et argument for denne funktion som vist nedenfor:

    For nu at få udvalget af datatyper henvises til følgende diagram

    Bemærk: syntaks header-fil er defineret for at finde rækken af ​​grundlæggende datatyper. Modifikatorer uden fortegn har minimumværdien nul. Så der er ikke defineret makrokonstanter for minimumsværdien uden fortegn.

    Makro konstanter

    Navn

    Udtrykker

    CHAR_MIN

    Minimumsværdien for et objekt af typen char

    CHAR_MAX

    Maksimal værdi for et objekt af typen char

    SCHAR_MIN

    Minimumsværdien for et objekt af typen Signed char

    SCHAR_MAX

    Maksimal værdi for et objekt af typen Signeret tegn

    FLIGHT_MAX

    Maksimal værdi for et objekt af typen Unsigned char

    CHAR_BIT

    Antal bits i et char-objekt

    MB_LEN_MAX

    Maksimalt antal bytes i et multi-byte tegn

    SHRT_MIN

    Minimumsværdien for et objekt af typen short int

    SHRT_MAX

    Maksimal værdi for et objekt af typen short int

    USHRT_MAX

    Maksimal værdi for et objekt af typen Unsigned short int

    INT_MIN

    Minimumsværdien for et objekt af typen int

    INT_MAX

    Maksimal værdi for et objekt af typen int

    UINT_MAX

    Maksimal værdi for et objekt af typen Unsigned int

    LONG_MIN

    Minimumsværdien for et objekt af typen long int

    LONG_MAX

    Maksimal værdi for et objekt af typen long int

    HEAD_MAX

    Maksimal værdi for et objekt af typen Unsigned long int

    SHIP_MIN

    Minimumsværdien for et objekt af typen long long int

    LLONG_MAX

    Maksimal værdi for et objekt af typen long long int

    ULLONG_MAX

    Maksimal værdi for et objekt af typen Unsigned long long int

    Den faktiske værdi afhænger af det særlige system- og biblioteksimplementering, men skal afspejle grænserne for disse typer i målplatformen. LLONG_MIN, LLONG_MAX og ULLONG_MAX er defineret for biblioteker, der overholder C-standarden fra 1999 eller senere (som kun inkluderer C++-standarden siden 2011: C++11).

    C++-program til at finde rækkevidden af ​​datatyper ved hjælp af makrokonstanter

    Eksempel:

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

    >

    >

    Produktion

    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>

    Tidskompleksitet: O(1)

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

    >

    >

    Produktion

    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!>

    Dette program erklærer variabler af forskellige datatyper, tildeler værdier til dem og udskriver derefter deres værdier.

    Heltalsdatatyperne inkluderer int, short, long og long long. Disse datatyper repræsenterer hele tal af varierende størrelse.

    Datatyperne med flydende komma inkluderer float, double og long double. Disse datatyper repræsenterer reelle tal med varierende præcisionsniveauer.

    Tegndatatyperne inkluderer char, wchar_t, char16_t og char32_t. Disse datatyper repræsenterer individuelle tegn af varierende størrelse.

    Den boolske datatype er en simpel datatype, der kun kan have én af to værdier: sand eller falsk.

    Strengdatatypen er en sekvens af tegn. I dette program bruger vi strengklassen til at erklære en strengvariabel og tildele den en værdi.

    Fordele :

    Datatyper giver mulighed for at kategorisere og organisere data i et program, hvilket gør det nemmere at forstå og administrere.
    Hver datatype har en specifik række af værdier, den kan indeholde, hvilket giver mulighed for mere præcis kontrol over den type data, der lagres.
    Datatyper hjælper med at forhindre fejl og fejl i et program ved at håndhæve strenge regler for, hvordan data kan bruges og manipuleres.
    C++ giver en bred vifte af datatyper, hvilket giver udviklere mulighed for at vælge den bedste type til en specifik opgave.

    Ulemper :

    Brug af den forkerte datatype kan resultere i uventet adfærd og fejl i et program.
    Nogle datatyper, såsom lange doubler eller char-arrays, kan optage en stor mængde hukommelse og påvirke ydeevnen, hvis de bruges overdrevent.
    C++’s komplekse typesystem kan gøre det svært for begyndere at lære og bruge sproget effektivt.
    Brugen af ​​datatyper kan tilføje yderligere kompleksitet og detaljering til et program, hvilket gør det sværere at læse og forstå.