Kaikki muuttujia käytä tietotyyppiä ilmoittamisen aikana rajoittaaksesi tallennettavien tietojen tyyppiä. Siksi voimme sanoa, että tietotyyppejä käytetään kertomaan muuttujille, minkä tyyppistä dataa ne voivat tallentaa. Aina kun muuttuja määritellään C++:ssa, kääntäjä varaa tälle muuttujalle muistia sen tietotyypin perusteella, jolla se on ilmoitettu. Jokainen tietotyyppi vaatii eri määrän muistia.
C++ tukee monenlaisia tietotyyppejä ja ohjelmoija voi valita sovelluksen tarpeisiin sopivan tietotyypin. Tietotyypit määrittelevät tallennettavien arvojen koon ja tyypit. Kuitenkin tallennusesitys ja koneen ohjeet kunkin tietotyypin käsittelemiseksi vaihtelevat koneittain, vaikka C++-ohjeet ovat samat kaikissa koneissa.
C++ tukee seuraavia tietotyyppejä:
- Ensisijainen tai Sisäänrakennettu tai Perustietotyyppi
- Johdetut tietotyypit
- Käyttäjän määrittämät tietotyypit

C++:n tietotyypit jaetaan pääasiassa kolmeen tyyppiin:
1. Primitiiviset tietotyypit : Nämä tietotyypit ovat sisäänrakennettuja tai ennalta määritettyjä tietotyyppejä, ja käyttäjä voi käyttää niitä suoraan muuttujien ilmoittamiseen. esimerkki: int, char, float, bool jne. C++:ssa saatavilla olevat primitiiviset tietotyypit ovat:
- Kokonaisluku
- Merkki
- Boolean
- Floating Point
- Kaksinkertainen liukuluku
- Arvoton tai tyhjä
- Leveä hahmo
2. Johdetut tietotyypit: Toiminto
3. Abstraktit tai käyttäjän määrittämät tietotyypit : Luokka
Primitiiviset tietotyypit
- Luokka
- Kokonaisluku : Kokonaislukutietotyypeissä käytetty avainsana on int . Kokonaisluvut vaativat yleensä 4 tavua muistitilaa ja vaihtelevat välillä -2147483648 - 2147483647.
- Merkki : Merkkien tietotyyppiä käytetään merkkien tallentamiseen. Merkkitietotyypin avainsana on hiiltyä . Merkit vaativat tyypillisesti 1 tavun muistitilaa ja vaihtelevat välillä -128 - 127 tai 0 - 255.
- Boolean : Boolen tietotyyppiä käytetään Boolen tai loogisten arvojen tallentamiseen. Boolen muuttuja voi tallentaa kumman tahansa totta tai väärä . Boolen tietotyypin avainsana on bool .
- Liukuluku : Liukulukutietotyyppiä käytetään yksittäisen tarkkuuden liukuluku- tai desimaaliarvojen tallentamiseen. Liukulukutietotyypin avainsana on kellua . Float-muuttujat vaativat tyypillisesti 4 tavua muistitilaa.
- Kaksinkertainen liukuluku : Double Floating Point -tietotyyppiä käytetään kaksinkertaisen tarkkuuden liukulukuarvojen tai desimaaliarvojen tallentamiseen. Kaksinkertaisen liukulukutietotyypin avainsana on kaksinkertainen . Kaksinkertaiset muuttujat vaativat tyypillisesti 8 tavua muistitilaa.
- mitätön : Void tarkoittaa ilman arvoa. void datatyyppi edustaa arvotonta kokonaisuutta. Void-tietotyyppiä käytetään niille funktioille, jotka eivät palauta arvoa.
- Luokka
- Leveä hahmo : Leveä luonne tietotyyppi on myös merkkitietotyyppi, mutta tämän tietotyypin koko on suurempi kuin tavallisen 8-bittisen tietotyypin. Edustaja wchar_t . Se on yleensä 2 tai 4 tavua pitkä.
- sizeof()-operaattori: sizeof()-operaattori käytetään etsimään muuttujan/tietotyypin käyttämien tavujen lukumäärä tietokoneen muistissa.
Esimerkki:
int m, x[50];
cout<
cout<
Muuttujien koko saattaa poiketa yllä olevassa taulukossa esitetyistä kääntäjästä ja käyttämästäsi tietokoneesta riippuen.
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;> }> |
>
>Lähtö
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>
Aika monimutkaisuus: O(1)
Tilan monimutkaisuus: O(1)
Tietotyyppien muuntajat
Kuten nimestä voi päätellä, tietotyyppimuuntajia käytetään sisäänrakennettujen tietotyyppien kanssa muokkaamaan datan pituutta, jonka tietty tietotyyppi voi sisältää.

C++:ssa saatavilla olevat tietotyyppimuuntimet ovat:
- Allekirjoitettu
- Allekirjoittamaton
- Lyhyt
- Pitkä
Alla olevassa taulukossa on yhteenveto sisäänrakennettujen tietotyyppien muokatusta koosta ja valikoimasta yhdistettynä tyyppimuuntajiin:
| Tietotyyppi | Koko (tavuina) | Alue |
|---|---|---|
| lyhyt int | 2 | -32 768 - 32 767 |
| allekirjoittamaton lyhyt väliv | 2 | 0 - 65 535 |
| allekirjoittamaton int | 4 | 0 - 4 294 967 295 |
| int | 4 | -2 147 483 648 - 2 147 483 647 if-else lauseke java |
| pitkä int | 4 | -2 147 483 648 - 2 147 483 647 |
| allekirjoittamaton pitkä välit | 4 | 0 - 4 294 967 295 |
| pitkä pitkä int | 8 | -(2^63) - (2^63)-1 |
| allekirjoittamaton pitkä pitkä int | 8 | 0 - 18 446 744 073 709 551 615 |
| allekirjoitettu char | 1 | -128-127 |
| allekirjoittamaton merkki | 1 | 0-255 |
| kellua | 4 | -3,4 × 10^38 - 3,4 × 10^38 |
| kaksinkertainen | 8 | -1,7 × 10^308 - 1,7 × 10^308 |
| pitkä tupla | 12 | -1,1 × 10^4932 - 1,1 × 10^4932 |
| wchar_t | 2 tai 4 | 1 leveä merkki |
Huomautus : Yllä olevat arvot voivat vaihdella kääntäjästä toiseen. Yllä olevassa esimerkissä olemme tarkastelleet GCC 32-bittistä.
Voimme näyttää kaikkien tietotyyppien koon käyttämällä sizeof()-operaattoria ja välittämällä tietotyypin avainsanan argumenttina tälle funktiolle alla esitetyllä tavalla:
Katso seuraavasta kaaviosta tietotyyppien valikoima
Huomautus: syntaksi otsikkotiedosto on määritetty etsimään perustietotyyppien valikoima. Etumerkittömien modifioijien vähimmäisarvo on nolla. Etumerkittömille minimiarvoille ei siis ole määritetty makrovakioita.
Makrovakiot
| Nimi | Ilmaisee |
|---|---|
| CHAR_MIN | char-tyypin objektin vähimmäisarvo |
| CHAR_MAX | Suurin arvo objektille, jonka tyyppi on char |
| SCHAR_MIN | Signed char -tyypin objektin vähimmäisarvo |
| SCHAR_MAX | Suurin arvo objektille, jonka tyyppi on Signed char |
| FLIGHT_MAX | Enimmäisarvo objektille, jonka tyyppi on Unsigned char |
| CHAR_BIT | Bittien määrä char-objektissa |
| MB_LEN_MAX | Tavujen enimmäismäärä monitavuisessa merkissä |
| SHRT_MIN | Short int -tyypin objektin vähimmäisarvo |
| SHRT_MAX | Suurin arvo objektille, jonka tyyppi on short int |
| USHRT_MAX | Suurin arvo objektille, jonka tyyppi on Unsigned short int |
| INT_MIN | Int-tyypin objektin vähimmäisarvo |
| INT_MAX | Maksimiarvo objektille, jonka tyyppi on int |
| UINT_MAX | Suurin arvo objektille, jonka tyyppi on Unsigned int |
| LONG_MIN | Vähimmäisarvo objektille, jonka tyyppi on long int |
| LONG_MAX | Suurin arvo objektille, jonka tyyppi on long int |
| HEAD_MAX | Suurin arvo objektille, jonka tyyppi on Unsigned long int |
| SHIP_MIN | Vähimmäisarvo objektille, jonka tyyppi on long long int |
| LLONG_MAX | Suurin arvo objektille, jonka tyyppi on long long int |
| ULLONG_MAX | Enimmäisarvo objektille, jonka tyyppi on Unsigned long long int |
Todellinen arvo riippuu tietystä järjestelmästä ja kirjaston toteutuksesta, mutta sen tulee kuvastaa näiden tyyppien rajoja kohdealustassa. LLONG_MIN, LLONG_MAX ja ULLONG_MAX on määritelty kirjastoille, jotka noudattavat C-standardia vuodelta 1999 tai uudempaa (joka sisältää vain C++-standardin vuodesta 2011 lähtien: C++11).
C++-ohjelma, joka etsii tietotyyppien alueen makrovakioiden avulla
Esimerkki:
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;> }> |
>
>Lähtö
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>
Aika monimutkaisuus: O(1)
Tilan monimutkaisuus: 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;> }> |
>
>Lähtö
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!>
Tämä ohjelma ilmoittaa eri tietotyyppien muuttujat, antaa niille arvot ja tulostaa sitten niiden arvot.
Kokonaislukutietotyyppejä ovat int, short, long ja long long. Nämä tietotyypit edustavat erikokoisia kokonaislukuja.
Liukulukutietotyyppejä ovat float, double ja long double. Nämä tietotyypit edustavat reaalilukuja vaihtelevalla tarkkuudella.
Merkkitietotyyppejä ovat char, wchar_t, char16_t ja char32_t. Nämä tietotyypit edustavat erikokoisia yksittäisiä merkkejä.
Boolen tietotyyppi on yksinkertainen tietotyyppi, jolla voi olla vain toinen kahdesta arvosta: tosi tai epätosi.
Merkkijonotietotyyppi on merkkijono. Tässä ohjelmassa käytämme merkkijonoluokkaa merkkijonomuuttujan ilmoittamiseen ja arvon määrittämiseen.
Edut :
Tietotyypit tarjoavat tavan luokitella ja järjestää ohjelman tiedot, mikä helpottaa niiden ymmärtämistä ja hallintaa.
Jokaisella tietotyypillä on tietty arvoalue, jonka se voi sisältää, mikä mahdollistaa tallennettavien tietojen tyypin tarkemman hallinnan.
Tietotyypit auttavat estämään ohjelman virheitä ja bugeja noudattamalla tiukkoja sääntöjä siitä, kuinka tietoja voidaan käyttää ja käsitellä.
C++ tarjoaa laajan valikoiman tietotyyppejä, joiden avulla kehittäjät voivat valita parhaan tyypin tiettyyn tehtävään.
Haitat :
Väärän tietotyypin käyttö voi johtaa odottamattomaan toimintaan ja virheisiin ohjelmassa.
Jotkin tietotyypit, kuten pitkät tupla- tai merkkitaulukot, voivat viedä paljon muistia ja heikentää suorituskykyä, jos niitä käytetään liikaa.
C++:n monimutkainen tyyppijärjestelmä voi vaikeuttaa aloittelijoiden kielen oppimista ja tehokasta käyttöä.
Tietotyyppien käyttö voi lisätä ohjelmaan monimutkaisuutta ja monimutkaisuutta, mikä vaikeuttaa sen lukemista ja ymmärtämistä.