logo

Typy danych C++

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:



  1. Podstawowy Lub Wbudowany Lub Podstawowy typ danych
  2. Pochodne typy danych
  3. Typy danych zdefiniowane przez użytkownika

Typy danych w C++

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ć

  • Szyk
  • Wskaźnik
  • Odniesienie
  • 3. Abstrakcyjne lub zdefiniowane przez użytkownika typy danych : Klasa

  • Struktura

  • Klasa
  • Unia
  • Klasa
  • Wyliczenie
  • Typedef zdefiniowany typ danych
  • 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 w C++

    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.