logo

C++ datatyper

Allt variabler använd datatyp under deklaration för att begränsa vilken typ av data som ska lagras. Därför kan vi säga att datatyper används för att berätta för variablerna vilken typ av data de kan lagra. Närhelst en variabel definieras i C++, allokerar kompilatorn lite minne för den variabeln baserat på den datatyp som den deklareras med. Varje datatyp kräver olika mängd minne.

C++ stöder en mängd olika datatyper och programmeraren kan välja den datatyp som passar applikationens behov. Datatyper anger storleken och typerna av värden som ska lagras. Lagringsrepresentation och maskininstruktioner för att manipulera varje datatyp skiljer sig dock från maskin till maskin, även om C++-instruktioner är identiska på alla maskiner.



C++ stöder följande datatyper:

  1. Primär eller Inbyggt eller Grundläggande datatyp
  2. Härledda datatyper
  3. Användardefinierade datatyper

Datatyper i C++

Datatyper i C++ är huvudsakligen uppdelade i 3 typer:

1. Primitiva datatyper : Dessa datatyper är inbyggda eller fördefinierade datatyper och kan användas direkt av användaren för att deklarera variabler. exempel: int, char, float, bool, etc. Primitiva datatyper tillgängliga i C++ är:



  • Heltal
  • Karaktär
  • Boolean
  • Flytpunkt
  • Dubbel flytande punkt
  • Värdelös eller tom
  • Bred karaktär

2. Härledda datatyper: Fungera

  • Array
  • Pekare
  • Referens
  • 3. Abstrakta eller användardefinierade datatyper : Klass

  • Strukturera

  • Klass
  • Union
  • Klass
  • Uppräkning
  • Typedef definierad Datatype
  • Primitiva datatyper

      Klass
    • Heltal : Nyckelordet som används för heltalsdatatyper är int . Heltal kräver vanligtvis 4 byte minnesutrymme och sträcker sig från -2147483648 till 2147483647.
    • Karaktär : Teckendatatyp används för att lagra tecken. Nyckelordet som används för teckendatatypen är röding . Tecken kräver vanligtvis 1 byte minnesutrymme och sträcker sig från -128 till 127 eller 0 till 255.
    • Boolean : Boolesk datatyp används för att lagra booleska eller logiska värden. En boolesk variabel kan lagra antingen Sann eller falsk . Nyckelordet som används för den booleska datatypen är bool .
    • Flytpunkt : Flyttalsdatatyp används för att lagra flyttalsvärden eller decimalvärden med en precision. Nyckelordet som används för flyttalsdatatypen är flyta . Flytvariabler kräver vanligtvis 4 byte minnesutrymme.
    • Dubbel flytande punkt : Dubbel flyttalsdatatyp används för att lagra flyttalsvärden eller decimalvärden med dubbel precision. Nyckelordet som används för datatypen med dubbel flyttal är dubbel . Dubbla variabler kräver vanligtvis 8 byte minnesutrymme.
    • tomhet : Tom betyder utan något värde. void datatyp representerar en värdelös enhet. En void datatyp används för de funktioner som inte returnerar ett värde.
    • Klass
    • Bred karaktär : Bred karaktär datatypen är också en teckendatatyp men denna datatyp har en storlek större än den normala 8-bitars datatypen. Representerad av wchar_t . Den är vanligtvis 2 eller 4 byte lång.
    • sizeof() operator: sizeof() operator används för att hitta antalet byte som upptas av en variabel/datatyp i datorns minne.

    Exempel:



    int m, x[50];

    cout<

    cout<

    Storleken på variabler kan skilja sig från de som visas i tabellen ovan, beroende på kompilatorn och datorn du använder.

    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>

    Tidskomplexitet: O(1)

    Utrymmes komplexitet: O(1)

    Datatypmodifierare

    Som namnet antyder används datatypmodifierare med inbyggda datatyper för att ändra längden på data som en viss datatyp kan hålla.

    Modifierare i C++

    Datatypsmodifierare tillgängliga i C++ är:

    • Signerad
    • Osignerad
    • Kort
    • Lång

    Tabellen nedan sammanfattar den modifierade storleken och intervallet av inbyggda datatyper när de kombineras med typmodifierarna:

    Data typ

    Storlek (i byte)

    Räckvidd

    kort int

    2

    -32 768 till 32 767

    osignerad kort int

    2

    0 till 65 535

    osignerad int

    4

    O till 4,294,967,295

    int

    4

    -2 147 483 648 till 2 147 483 647

    cpp är lika med

    lång int

    4

    -2 147 483 648 till 2 147 483 647

    osignerad lång int

    4

    O till 4,294,967,295

    lång lång int

    8

    -(2^63) till (2^63)-1

    osignerad lång lång int

    8

    0 till 18 446 744 073 709 551 615

    signerad röding

    1

    -128 till 127

    osignerad röding

    1

    0 till 255

    flyta

    4

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

    dubbel

    8

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

    lång dubbel

    12

    -1,1×10^4932 till 1,1×10^4932

    wchar_t

    2 eller 4

    1 bred karaktär

    Notera : Ovanstående värden kan variera från kompilator till kompilator. I exemplet ovan har vi övervägt GCC 32 bitar.
    Vi kan visa storleken på alla datatyper genom att använda operatorn sizeof() och skicka nyckelordet för datatypen, som ett argument för denna funktion som visas nedan:

    För att få information om intervallet för datatyper, se följande diagram

    Obs: syntax header-filen är definierad för att hitta intervallet av grundläggande datatyper. Osignerade modifierare har ett lägsta värde är noll. Så inga makrokonstanter definieras för det osignerade minimivärdet.

    Makrokonstanter

    namn

    Uttrycker

    CHAR_MIN

    Minsta värde för ett objekt av typen char

    CHAR_MAX

    Maximalt värde för ett objekt av typen char

    SCHAR_MIN

    Minsta värde för ett objekt av typen Signed char

    SCHAR_MAX

    Maximalt värde för ett objekt av typen Signed char

    FLIGHT_MAX

    Maximalt värde för ett objekt av typen Unsigned char

    CHAR_BIT

    Antal bitar i ett char-objekt

    MB_LEN_MAX

    Maximalt antal byte i ett flerbytetecken

    SHRT_MIN

    Minimivärdet för ett objekt av typen short int

    SHRT_MAX

    Maximalt värde för ett objekt av typen short int

    USHRT_MAX

    Maximalt värde för ett objekt av typen Unsigned short int

    INT_MIN

    Minimivärdet för ett objekt av typen int

    INT_MAX

    Maximalt värde för ett objekt av typen int

    UINT_MAX

    Maximalt värde för ett objekt av typen Unsigned int

    LONG_MIN

    Minsta värde för ett objekt av typen long int

    LONG_MAX

    Maximalt värde för ett objekt av typen long int

    HEAD_MAX

    Maximalt värde för ett objekt av typen Unsigned long int

    SHIP_MIN

    Minimivärdet för ett objekt av typen long long int

    LLONG_MAX

    Maximalt värde för ett objekt av typen long long int

    ULLONG_MAX

    Maximalt värde för ett objekt av typen Unsigned long long int

    Det faktiska värdet beror på det specifika systemet och biblioteksimplementeringen men ska återspegla gränserna för dessa typer i målplattformen. LLONG_MIN, LLONG_MAX och ULLONG_MAX definieras för bibliotek som följer C-standarden från 1999 eller senare (som endast inkluderar C++-standarden sedan 2011: C++11).

    C++-program för att hitta intervallet för datatyper med hjälp av makrokonstanter

    Exempel:

    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>

    Tidskomplexitet: O(1)

    Utrymmes komplexitet: 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!>

    Detta program deklarerar variabler av olika datatyper, tilldelar dem värden och skriver sedan ut deras värden.

    Heltalsdatatyperna inkluderar int, kort, lång och lång lång. Dessa datatyper representerar heltal av varierande storlek.

    Flyttalsdatatyperna inkluderar flytande, dubbel och lång dubbel. Dessa datatyper representerar reella tal med varierande precisionsnivåer.

    Teckendatatyperna inkluderar char, wchar_t, char16_t och char32_t. Dessa datatyper representerar individuella tecken av varierande storlek.

    Den booleska datatypen är en enkel datatyp som bara kan ha ett av två värden: sant eller falskt.

    Strängdatatypen är en sekvens av tecken. I det här programmet använder vi strängklassen för att deklarera en strängvariabel och tilldela den ett värde.

    Fördelar :

    Datatyper ger ett sätt att kategorisera och organisera data i ett program, vilket gör det lättare att förstå och hantera.
    Varje datatyp har ett specifikt intervall av värden den kan hålla, vilket möjliggör mer exakt kontroll över vilken typ av data som lagras.
    Datatyper hjälper till att förhindra fel och buggar i ett program genom att upprätthålla strikta regler om hur data kan användas och manipuleras.
    C++ tillhandahåller ett brett utbud av datatyper, vilket gör att utvecklare kan välja den bästa typen för en specifik uppgift.

    Nackdelar :

    Att använda fel datatyp kan resultera i oväntat beteende och fel i ett program.
    Vissa datatyper, som långa dubblar eller char arrays, kan ta upp en stor mängd minne och påverka prestanda om de används överdrivet.
    C++:s komplexa typsystem kan göra det svårt för nybörjare att lära sig och använda språket effektivt.
    Användningen av datatyper kan lägga till ytterligare komplexitet och utförlighet till ett program, vilket gör det svårare att läsa och förstå.