Wszystko zmienne użyj typu danych podczas deklaracji, aby ograniczyć typ danych, które mają być przechowywane. Dlatego możemy powiedzieć, że typy danych służą do informowania zmiennych o rodzaju danych, jakie mogą przechowywać. Ilekroć zmienna jest zdefiniowana w C++, kompilator przydziela jej część pamięci w oparciu o typ danych, z jakim jest ona zadeklarowana. Każdy typ danych wymaga innej ilości pamięci.
C++ obsługuje szeroką gamę typów danych, a programista może wybrać typ danych odpowiedni do potrzeb aplikacji. Typy danych określają rozmiar i typy wartości, które mają być przechowywane. Jednak reprezentacja pamięci i instrukcje maszynowe do manipulowania każdym typem danych różnią się w zależności od maszyny, chociaż instrukcje C++ są identyczne na wszystkich maszynach.
C++ obsługuje następujące typy danych:
- Podstawowy Lub Wbudowany Lub Podstawowy typ danych
- Pochodne typy danych
- Typy danych zdefiniowane przez użytkownika

Typy danych w C++ dzielą się głównie na 3 typy:
1. Pierwotne typy danych : Te typy danych są wbudowanymi lub predefiniowanymi typami danych i mogą być używane bezpośrednio przez użytkownika do deklarowania zmiennych. przykład: int, char, float, bool itp. Pierwotne typy danych dostępne w C++ to:
- Liczba całkowita
- Postać
- Wartość logiczna
- Zmiennoprzecinkowy
- Podwójny zmiennoprzecinkowy
- Bezwartościowe lub puste
- Szeroki charakter
2. Pochodne typy danych: Funkcjonować
3. Abstrakcyjne lub zdefiniowane przez użytkownika typy danych : Klasa
Pierwotne typy danych
- Klasa
- Liczba całkowita : Słowo kluczowe używane w przypadku typów danych całkowitych to wew . Liczby całkowite zazwyczaj wymagają 4 bajtów pamięci i mieszczą się w zakresie od -2147483648 do 2147483647.
- Postać : Znakowy typ danych używany do przechowywania znaków. Słowo kluczowe używane do określenia typu danych znakowych to zwęglać . Znaki zazwyczaj zajmują 1 bajt miejsca w pamięci i mieszczą się w zakresie od -128 do 127 lub od 0 do 255.
- Wartość logiczna : Typ danych Boolean jest używany do przechowywania wartości logicznych lub logicznych. Zmienna logiczna może przechowywać jedno i drugie PRAWDA Lub FAŁSZ . Słowo kluczowe używane dla typu danych Boolean to bool .
- Zmiennoprzecinkowy : Typ danych zmiennoprzecinkowy jest używany do przechowywania wartości zmiennoprzecinkowych lub wartości dziesiętnych o pojedynczej precyzji. Słowo kluczowe używane dla typu danych zmiennoprzecinkowych to platforma . Zmienne typu float zazwyczaj wymagają 4 bajtów pamięci.
- Podwójny zmiennoprzecinkowy : Typ danych Double Floating Point jest używany do przechowywania wartości zmiennoprzecinkowych lub wartości dziesiętnych o podwójnej precyzji. Słowo kluczowe używane dla typu danych double zmiennoprzecinkowego to podwójnie . Podwójne zmienne zazwyczaj wymagają 8 bajtów pamięci.
- próżnia : Void oznacza brak wartości. typ danych void reprezentuje bezwartościową jednostkę. W przypadku funkcji, które nie zwracają wartości, używany jest typ danych void.
- Klasa
- Szeroki charakter : Szeroki charakter typ danych jest również znakowym typem danych, ale ten typ danych ma rozmiar większy niż normalny 8-bitowy typ danych. Reprezentowane przez wchar_t . Zwykle ma długość 2 lub 4 bajtów.
- operator sizeof(): operator sizeof(). służy do znalezienia liczby bajtów zajmowanych przez zmienną/typ danych w pamięci komputera.
Przykład:
int m , x[50];
cout<
cout<
Rozmiar zmiennych może różnić się od pokazanego w powyższej tabeli, w zależności od kompilatora i komputera, którego używasz.
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;> }> |
>
>Wyjście
Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8>
Złożoność czasowa: O(1)
Złożoność przestrzeni: O(1)
Modyfikatory typów danych
Jak sama nazwa wskazuje, modyfikatory typów danych są używane z wbudowanymi typami danych w celu modyfikowania długości danych, które może przechowywać określony typ danych.

Modyfikatory typów danych dostępne w C++ to:
- Podpisano
- Niepodpisany
- Krótki
- Długi
Poniższa tabela podsumowuje zmodyfikowany rozmiar i zakres wbudowanych typów danych w połączeniu z modyfikatorami typów:
| Typ danych | Rozmiar (w bajtach) | Zakres |
|---|---|---|
| krótki wew | 2 | -32 768 do 32 767 |
| krótki int bez znaku | 2 | 0 do 65 535 |
| bez znaku int | 4 | 0 do 4 294 967 295 |
| wew | 4 | -2 147 483 648 do 2 147 483 647 przekonwertuj int na ciąg c++ |
| długi wew | 4 | -2 147 483 648 do 2 147 483 647 |
| długi int bez znaku | 4 | 0 do 4 294 967 295 |
| długi długi wew | 8 | -(2^63) do (2^63)-1 |
| bez znaku długi długi int | 8 | 0 do 18 446 744 073 709 551 615 |
| podpisany znak | 1 | -128 do 127 |
| znak bez znaku | 1 | 0 do 255 |
| platforma | 4 | -3,4×10^38 do 3,4×10^38 |
| podwójnie | 8 | -1,7×10^308 do 1,7×10^308 |
| długi podwójny | 12 | -1,1×10^4932 do 1,1×10^4932 |
| wchar_t | 2 lub 4 | 1 szeroki znak |
Notatka : Powyższe wartości mogą się różnić w zależności od kompilatora. W powyższym przykładzie rozważaliśmy 32-bitowy GCC.
Możemy wyświetlić rozmiar wszystkich typów danych, używając operatora sizeof() i przekazując słowo kluczowe typu danych jako argument tej funkcji, jak pokazano poniżej:
Aby poznać zakres typów danych, skorzystaj z poniższego wykresu
Uwaga: składnia plik nagłówkowy jest zdefiniowany w celu znalezienia zakresu podstawowych typów danych. Modyfikatory bez znaku mają minimalną wartość wynoszącą zero. Zatem dla minimalnej wartości bez znaku nie zdefiniowano żadnych stałych makro.
Stałe makro
| Nazwa | Wyraża |
|---|---|
| CHAR_MIN | Minimalna wartość obiektu typu char |
| CHAR_MAX | Maksymalna wartość obiektu typu char |
| SCHAR_MIN | Minimalna wartość obiektu typu Signed char |
| SCHAR_MAX | Maksymalna wartość dla obiektu typu Signed char |
| LOT_MAX | Maksymalna wartość obiektu typu Unsigned char |
| CHAR_BIT | Liczba bitów w obiekcie char |
| MB_LEN_MAX | Maksymalna liczba bajtów w znaku wielobajtowym |
| SHRT_MIN | Minimalna wartość obiektu typu short int |
| SHRT_MAX | Maksymalna wartość dla obiektu typu short int |
| USHRT_MAX | Maksymalna wartość dla obiektu typu Unsigned short int |
| INT_MIN | Minimalna wartość obiektu typu int |
| INT_MAX | Maksymalna wartość dla obiektu typu int |
| UINT_MAX | Maksymalna wartość dla obiektu typu Unsigned int |
| DŁUGIE_MIN | Minimalna wartość obiektu typu long int |
| DŁUGIE_MAX | Maksymalna wartość dla obiektu typu long int |
| HEAD_MAX | Maksymalna wartość dla obiektu typu Unsigned long int |
| WYSYŁKA_MIN | Minimalna wartość obiektu typu long long int |
| LLONG_MAX | Maksymalna wartość dla obiektu typu long long int |
| ULLONG_MAX | Maksymalna wartość dla obiektu typu Unsigned long long int |
Rzeczywista wartość zależy od konkretnego systemu i implementacji biblioteki, ale powinna odzwierciedlać ograniczenia tego typu na platformie docelowej. LLONG_MIN, LLONG_MAX i ULLONG_MAX są zdefiniowane dla bibliotek zgodnych ze standardem C z 1999 r. lub nowszym (który obejmuje tylko standard C++ od 2011 r.: C++ 11).
Program w C++ do znajdowania zakresu typów danych przy użyciu stałych makr
Przykład:
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;> }> |
>
>Wyjście
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>
Złożoność czasowa: O(1)
Złożoność przestrzeni: 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;> }> |
>
>Wyjście
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!>
Program ten deklaruje zmienne różnych typów danych, przypisuje im wartości, a następnie wypisuje ich wartości.
Typy danych całkowitych obejmują int, short, long i long long. Te typy danych reprezentują liczby całkowite o różnych rozmiarach.
Typy danych zmiennoprzecinkowych obejmują float, double i long double. Te typy danych reprezentują liczby rzeczywiste z różnym poziomem precyzji.
Znakowe typy danych obejmują char, wchar_t, char16_t i char32_t. Te typy danych reprezentują pojedyncze znaki o różnych rozmiarach.
Typ danych boolowskich to prosty typ danych, który może przyjmować tylko jedną z dwóch wartości: prawdę lub fałsz.
Typ danych string to sekwencja znaków. W tym programie używamy klasy string do zadeklarowania zmiennej łańcuchowej i przypisania jej wartości.
Zalety :
Typy danych umożliwiają kategoryzację i organizowanie danych w programie, ułatwiając ich zrozumienie i zarządzanie.
Każdy typ danych ma określony zakres wartości, jakie może przechowywać, co pozwala na bardziej precyzyjną kontrolę nad typem przechowywanych danych.
Typy danych pomagają zapobiegać błędom i błędom w programie, wymuszając rygorystyczne zasady dotyczące sposobu wykorzystania danych i manipulowania nimi.
C++ zapewnia szeroką gamę typów danych, umożliwiając programistom wybór najlepszego typu dla konkretnego zadania.
Niedogodności :
Użycie niewłaściwego typu danych może spowodować nieoczekiwane zachowanie i błędy w programie.
Niektóre typy danych, takie jak długie dane podwójne lub tablice znaków, mogą zajmować dużą ilość pamięci i mieć wpływ na wydajność, jeśli są nadmiernie używane.
Złożony system typów C++ może utrudniać początkującym naukę i efektywne używanie języka.
Użycie typów danych może zwiększyć złożoność i szczegółowość programu, czyniąc go trudniejszym do odczytania i zrozumienia.