Datatyper i C++

Datatyper i C++

Oversigt

Når vi begynder at lære et hvilket som helst sprog, er datatypen det væsentlige, vi skal vide for at komme i gang med kodningsdelen af ​​sproget. Datatypen kan defineres som den type data, enhver variabel kan rumme, såsom heltal, float, karakterdatatype og mere. Der er flere datatyper på hvert sprog, så for effektivt og korrekt at bruge disse datatyper ville vi lære datatyper i detaljer.

Omfang

  • Vi vil lære, hvad datatyper er, forskellige typer datatyper og syntaksen for at bruge disse forskellige typer datatyper i denne artikel.
  • Her vil vi også fokusere på datatypemodifikatorerne og deres typer.

Definition af datatyper

En datatype er defineret som den type data, som en variabel kan indeholde. For eksempel kan en boolsk variabel have boolske data, og en heltalsvariabel kan indeholde heltalsdata.

Mens vi koder, skal vi bruge forskellige variabler til at gemme forskellig information. Variabler er blot lagringssteder, der er reserveret til lagring af værdier. Derfor reserverer du noget plads i hukommelsen, når du opretter variablen. Du vil måske gemme oplysninger for forskellige datatyper, såsom heltal, flydende, streng og booleske værdier. Hukommelse allokeres baseret på variablens datatype. Den nødvendige mængde hukommelse afhænger af datatypen.

For eksempel,

 int score = 99;

Score her er en int datatype variabel. Den variable score kan kun gemme 2-byte eller 4-byte heltal afhængigt af compileren/systemet.

I C++ kan datatyper klassificeres som følger:

  1. Primitive datatyper
  2. Afledte datatyper
  3. Abstrakte datatyper

Primitive datatyper i C++

Brugere kan bruge de primitive datatyper til at erklære variabler, og disse er indbyggede datatyper i C++, for eksempel float, bool osv. Primitive datatyper, der findes i C++, er defineret nedenfor:

1. Heltal

Heltalsdatatyper kan repræsenteres af nøgleordet int. Intervallet af heltal er -2147483648 til 2147483647, og de fylder 4 bytes hukommelse.

For eksempel,

 int data = 1526;

"data" her er en heltalsdatatypevariabel. Variablen "data" kræver 2 bytes eller 4 bytes hukommelsesplads.

2. Karakter

Tegn er repræsenteret af søgeordet char. Den er 1 byte stor. Enkelte anførselstegn ' ' bruges til at omslutte tegn i C++.

For eksempel,

 char ch = 's';

"ch" her er en karakterdatatypevariabel. Det betyder, at variablen kræver 1 byte hukommelsesplads.

3. Boolean

Den boolske datatypes nøgleord er bool. Sand eller falsk er de to mulige værdier for den boolske datatype. Booleske værdier bruges generelt i betingede udsagn og loops.

For eksempel,

 bool is_true = true;

"is_true" her er en boolesk datatypevariabel. Det betyder, at variablen kræver 1 byte hukommelsesplads.

4. Flydende point

float er nøgleordet, der bruges til at holde flydende decimaltal (decimaler og eksponentialer). Float-variablen har en størrelse på 4 bytes.

For eksempel,

 float val = 15.26;

"Val" her er en variabel datatype med flydende komma. Det betyder, at variablen kræver 4 bytes hukommelsesplads.

5. Dobbelt flydende punkt

double er nøgleordet, der bruges til at holde flydende kommatal (decimaler og eksponentialer) med dobbelt præcision. Den dobbelte variabel har en størrelse på 8 bytes.

For eksempel,

 double val = 2019.1526;

"Val" her er en datatypevariabel med dobbelt flydende komma. Det betyder, at variablen kræver 8 bytes hukommelse.

6. Ugyldig eller værdiløs

Udtrykket "tomt" refererer til noget, der ikke har noget værd. Den ugyldige datatype repræsenterer en værdiløs enhed. Variabler af void-typen kan ikke erklæres. Det bruges kun til funktioner og returnerer ikke nogen data.

7. Bred karakter

Wchar_t-datatypen med brede tegn ligner datatypen char, men dens størrelse er 2 eller 4 bytes i stedet for 1 byte. Den bruges til at repræsentere tegn, der optager mere hukommelse end et enkelt tegn at repræsentere.

For eksempel,

wchar_t w = L'C';

"w" her er en datatypevariabel med brede karakterer, der har en værdi på 67 "(L'C')" og har en størrelse på 4 bytes. Det betyder, at variablen kræver 2 bytes eller 4 bytes hukommelsesplads.

Afledte datatyper i C++

Afledte datatyper er datatyper, der oprettes ved at kombinere primitive eller indbyggede datatyper. Der er fire forskellige typer af afledte datatyper. Disse er:

1. Funktion

En funktion er et kodesegment eller en kodeblok, der er defineret til at opnå et bestemt formål. En funktion er ofte designet til at skåne brugeren for at skrive de samme linjer kode til det samme input gentagne gange. Alle kodelinjerne er kombineret til en enkelt funktion, der kan aktiveres hvor som helst. Hver C++-applikation indeholder en standardfunktion kaldet main(). Funktionen har også en returtype, som bruges til at specificere den type data, som funktionen ville returnere, når dens udførelse er færdig. Funktionens returtype kan være en hvilken som helst datatype, inklusive tomrummet, som angiver, at der ikke er behov for at returnere noget, når først udførelsen af ​​denne funktion er fuldført.

Syntaks:

function_return_type function_name(parameters) {

}

Eksempel:

 int sum(int num1, int num2) {
  return (num1 + num2);
}

Her er sumfunktionens returtype et heltal, og funktionen bruges til at beregne summen af ​​2 tal.

2. Array

Et array er et sæt af elementer, der opbevares i hukommelsen på en kontinuerlig måde og også har den samme type data til stede i arrayet. Formålet bag et array er at gemme en masse data i et enkelt variabelnavn og i sekventiel rækkefølge.

Syntaks:

datatype array_name[size_of_array];

Eksempel:

 int arr[4]={0,1,2,3};

Her har vi defineret et heltalsarray af størrelse 4, som kontinuerligt kan lagre fire heltalsvariabler i hukommelsen.

3. Markør

Pointere er symbolske repræsentationer af adresser. Pointere bruges til at gemme adresserne på variablerne med samme datatype som markørens. Størrelsen på markøren er enten 4 bytes eller 8 bytes, uanset hvilken datatype der er. De gør det muligt for programmer at skabe og ændre dynamiske datastrukturer, samt at efterligne opkald ved reference. I C/C++ ser dens generiske erklæring således ud:

Syntaks:

data_type* variable_name;

Eksempel:

 int* point_int;

point_int indeholder adressen på en variabel af en heltalsdatatype.

4. Reference

Når vi erklærer en variabel som en reference, bliver den et alternativt navn til en eksisterende variabel. Ved at tilføje '&' til en variabels erklæring, kan den erklæres som en reference.

Eksempel:

 int val = 1526;
 int &ref = val;

Her bliver ref referencen til heltal x, og nu vil enhver ændring i den ene automatisk blive afspejlet i den anden, da de begge repræsenterer den samme hukommelsesplacering.

Abstrakte eller brugerdefinerede datatyper i C++

Den abstrakte datatype, også kendt som brugerdefineret datatype, er en type data, der er defineret af brugeren.

Eksempler på disse er:

1. Klasse

En klasse er en C++ byggedel, der fører til objektorienteret programmering. Det er en brugerdefineret datatype med sit eget sæt af datamedlemmer og medlemsfunktioner, som kan tilgås og bruges ved at etablere en klasseinstans. En klasse definerer planen for en datatype.

Eksempel:

class scaler {
  public:
    string student_name;
    
    void print_name() {
      cout << "Student name is: " << student_name << endl;
    }
};

int main() {
  scaler student1, student2;
  student1.student_name = "Shivam Singla";
  student1.print_name();
  student2.student_name = "Sachin Singla";
  student2.print_name();
  return 0;
}

Output:

Student name is: Shivam Singla
Student name is: Sachin Singla

I ovenstående eksempel er scaler navnet på klassen. Vi kan inkludere datamedlemmerne, som er klassevariablerne. På samme måde tilføjes medlemsfunktioner også i klassen, eksempel print_name(), her er medlemsfunktionen, og elev_navn er datamedlemmet. Her er elev1 og elev2 objekterne i klasseskaleren.

2. Struktur

Strukturdatatype er en brugerdefineret datatype, der bruges til at kombinere objekter af potentielt forskellige datatyper til en enkelt type.

Eksempel:

 struct student {
     char name[15];
     char roll_no[10];
     int marks;
};

Her kombineres forskellige datatyper såsom et array af karakter- og heltalsdatatyper for at lave en ny datatype efter brugerens behov.

3. Union

Union ligner Structures, da den også bruges til at kombinere de forskellige typer data til en enkelt brugerdefineret datatype. Alle medlemmer af en fagforening har adgang til samme hukommelse. Som det nedenfor viste eksempel kan vi kombinere heltalsdatatypen og karakterdatatypen til en enkelt datatype kaldet test, og i dette tilfælde, da både datatyperne heltal og karakter har forskellige størrelser af data, vil vi derfor tage størrelsen på større datatype som størrelsen af ​​den nye brugerdefinerede datatypetest. Vi kan se, hvordan ændringer i num afspejles i var, hvis vi justerer num.

Eksempel:

union test {
    int num;
    char var;
};

Her deler num og var den samme hukommelse. Derfor, hvis vi foretager ændringer i nogen af ​​variablerne; ændringerne vil automatisk afspejle til en anden variabel.

4. Opregning

I C++ er en opregning (eller enum) en datatype, som brugeren opretter. Det bruges primært til at give integrerede konstantnavne, hvilket gør programmet lettere at forstå og vedligeholde. I opregning, hvis vi ikke eksplicit angiver integralværdierne til strengene, begynder strengene i så fald automatisk at tildele integralværdierne startende fra værdien 0, det samme som tilfældet med 0-baseret indeksering.

Eksempel:

enum result {pass = 100, fail = 0};

Her har vi givet heltalværdien 100 til at være "bestået" og 0 som "ikke bestået", derfor hvis vi skriver

enum result res;
res = pass;

Så ville værdien af ​​res automatisk være 100.

5. Typedef defineret DataType

Udtrykket typedef i C++ giver dig mulighed for at erklære eksplicitte nye datatypenavne. Brug af typedef opretter ikke en ny dataklasse, i stedet giver det en eksisterende type et navn. Fordi blot typedef-sætningerne skulle opdateres, kan et programs portabilitet forbedres ved at lave minimale ændringer. Ved at tillade beskrivende termer for standarddatatyperne kan typedef hjælpe med selvdokumenterende kode.

Eksempel:

typedef long int ll;

Nu kan vi bruge "ll" til at definere den lange int-datatype i koden

For eksempel

ll val;
val = 123;

Datatypemodifikatorer i C++

DataType-modifikatorer kan bruges til at ændre nogle af kernedatatyperne yderligere. I C++ er der fire typer modifikatorer. Int, Double og Char er de datatyper, der kan ændres ved hjælp af disse modifikatorer. De er som følger:

1. Underskrevet

2. Usigneret

3. Kort

4. Langt

Tabellen nedenfor illustrerer variabeltypen, mængden af ​​hukommelse, der kræves for at holde værdien i hukommelsen, og de maksimale og laveste værdier, der er gemt i sådanne variable. Nedenstående værdier kan variere fra en compiler til en anden. GCC 32 bit blev brugt i følgende værdier.

Datatype Størrelse (i bytes) Rækkevidde
int eller signeret int 4 bytes -2.147.483.648 til 2.147.483.647
usigneret int. 4 bytes 0 til 4.294.967.295
kort int 2 bytes -32.768 til 32.767
lang int 4 bytes -2.147.483.648 til 2.147.483.647
usigneret kort int 2 bytes 0 til 65.535
usigneret lang int 8 bytes 0 til 4.294.967.295
lang lang int 8 bytes -(2^63) til (2^63)-1
usigneret lang lang int 8 bytes 0 til 18.446.744.073.709.551.615
signeret tegn 1 bytes -128 til 127
usigneret tegn 1 bytes 0 til 255
wchar_t 2 eller 4 bytes 1 bredt tegn
flyde 4 bytes
dobbelt 8 bytes
lang dobbelt 12 bytes

Koden nedenfor vil resultere i den korrekte størrelse af forskellige datatyper på din pc:

Kode:

#include<bits/stdc++.h>
using namespace std;

int main() {
  cout << "Size of following Datatypes in bytes: \n";
  cout << "int : " << sizeof(int) << endl;
  cout << "unsigned int : " << sizeof(unsigned int) << endl;
  cout << "short int : " << sizeof(short int) << endl;
  cout << "long int : " << sizeof(long int) << endl;
  cout << "unsigned short int : " << sizeof(unsigned short int) << endl;
  cout << "unsigned long int : " << sizeof(unsigned long int) << endl;
  cout << "long long int : " << sizeof(long long int) << endl;
  cout << "unsigned long long int : " << sizeof(unsigned long long int) << endl;
  cout << "signed char : " << sizeof(signed char) << endl;
  cout << "unsigned char : " << sizeof(unsigned char) << endl;
  cout << "wchar_t : " << sizeof(wchar_t) << endl;
  cout << "float : " << sizeof(float) << endl;
  cout << "double : " << sizeof(double) << endl;

  return 0;
}

Output:

Size of following Datatypes in bytes: 
int : 4  
unsigned int : 4  
short int : 2  
long int : 8  
unsigned short int : 2  
unsigned long int : 8  
long long int : 8  
unsigned long long int : 8  
signed char : 1  
unsigned char : 1  
wchar_t : 4  
float : 4  
double : 8  

Konklusion

Når vi begynder at kode på et hvilket som helst sprog, er det første, vi skal forstå, datatyper. Vi lærte datatyper meget detaljeret i dette afsnit, og jeg vil opfordre jer alle til at øve jer mere med datatyper for hurtigt at lære C++. Nogle vigtige punkter at fokusere på fra ovenstående artikel er diskuteret nedenfor:

  1. Der er tre datatyper i C++, som er primitive datatyper, abstrakte datatyper og afledte datatyper.
  2. Primitive datatyper omfatter heltal, flydende komma, karakter, boolean, dobbelt flydende komma, værdiløs eller ugyldig og bred karakter.
  3. Brugerdefinerede eller abstrakte datatyper omfatter klasse, opregning, union, struktur og typedef defineret datatype.
  4. Afledte datatyper omfatter matrix, funktion, pointer og reference.
  5. Forskellige typer datamodifikatorer er korte, lange, signerede og usignerede, som vi kunne anvende på datatyper som int, double, char osv.