Typy danych C++

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

    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.