Predefiniowane typy danych w C++ to typy danych, które są wbudowane w język i dostępne do użytku bez potrzeby ich definicji przez programistę. Te typy obejmują zarówno proste typy danych, takie jak typy całkowite, zmiennoprzecinkowe, znakowe i logiczne, które omówiliśmy wcześniej, jak i specjalny typ void
. Są one „predefiniowane”, ponieważ ich specyfikacja jest już określona przez standard języka C++, co oznacza, że kompilator zna ich rozmiar, zakres i sposób przechowywania w pamięci.
Deklaracja i inicjalizacja zmiennych
- Deklaracja zmiennej polega na określeniu typu zmiennej i jej nazwy w programie. Deklaracja informuje kompilator o tym, że dana zmienna istnieje, jaki ma typ i w rezultacie, jak dużo miejsca w pamięci należy dla niej zarezerwować. Przykład deklaracji zmiennej:
int liczba;
- Inicjalizacja zmiennej to proces przypisania wartości do zmiennej w momencie jej deklaracji lub po niej. Inicjalizacja zapewnia, że zmienna ma określoną wartość przed jej pierwszym użyciem. Przykłady inicjalizacji zmiennej:
- Podczas deklaracji:
int liczba = 5;
- Po deklaracji:
liczba = 5;
- Podczas deklaracji:
Alias typu (Alias nazw predefiniowanych typów danych)
C++ umożliwia tworzenie aliasów dla typów danych, co pozwala na zastąpienie predefiniowanych lub złożonych typów danych bardziej zrozumiałymi lub krótszymi nazwami. Istnieją dwa główne sposoby definiowania aliasów typów w C++:
- Słowo kluczowe
typedef
służy do tworzenia nowej nazwy (aliasu) dla istniejącego typu danych. Na przykład:
typedef unsigned long ulong;
- Powyższy kod tworzy alias
ulong
dla typuunsigned long
, co pozwala używaćulong
zamiast pełnej nazwy typu w kodzie. - Od standardu C++11 można również użyć konstrukcji
using
do tworzenia aliasów typów, co jest bardziej elastyczne i zalecane w nowszych projektach. Przykład:
using uint = unsigned int;
- Ten kod tworzy alias
uint
dla typuunsigned int
.
Aliasowanie jest szczególnie użyteczne przy pracy z typami złożonymi, takimi jak szablony, ponieważ pozwala na uproszczenie i zwiększenie czytelności kodu.
Podsumowując, predefiniowane typy danych w C++ to fundamenty, na których opiera się programowanie w tym języku. Deklaracja i inicjalizacja zmiennych to kluczowe koncepcje, które pozwalają na efektywne zarządzanie pamięcią i danymi w programie. Alias typu to zaś narzędzie, które dodatkowo zwiększa czytelność i elastyczność kodu, umożliwiając programistom lepszą organizację i strukturę ich programów.
Typ danych w programowaniu definiuje zbiór wartości, które zmienna może przechowywać, oraz zbiór operacji, które można na tych danych wykonać. W C++, typy danych pozwalają programiście precyzyjnie kontrolować rodzaje informacji, które mogą być przechowywane w pamięci komputera, oraz sposób ich interpretacji przez kompilator. Typy całkowite
Wprowadzenie do typów danych w C++
- int: Jest to najczęściej używany typ całkowity, który może przechowywać liczby całkowite (zarówno dodatnie, jak i ujemne). Rozmiar
int
zależy od systemu, ale zazwyczaj wynosi 4 bajty (32 bity), co pozwala na przechowywanie wartości od -2,147,483,648 do 2,147,483,647. - short: Mały typ całkowity, zwykle zajmujący 2 bajty, co ogranicza jego zakres wartości. Używany, gdy wiadomo, że zmienne nie będą przechowywać dużych liczb.
- long: Rozszerzony typ całkowity, zazwyczaj 4 lub 8 bajtów, używany do przechowywania większych wartości całkowitych.
- long long: Jeszcze większy typ całkowity, zazwyczaj 8 bajtów, pozwalający na przechowywanie bardzo dużych wartości całkowitych.
- unsigned: Modyfikator typu, który może być używany z typami całkowitymi, eliminujący możliwość przechowywania wartości ujemnych, co podwaja zakres dostępnych wartości dodatnich.
3. Typy zmienno-przecinkowe
- float: Typ zmiennoprzecinkowy o pojedynczej precyzji, który może przechowywać liczby z częścią dziesiętną. Przyjmuje 4 bajty i jest używany, gdy wymagana jest mniejsza dokładność.
- double: Typ zmiennoprzecinkowy o podwójnej precyzji, zapewniający większą dokładność niż
float
i zajmujący 8 bajtów. Jest to domyślny wybór dla operacji zmiennoprzecinkowych. - long double: Zapewnia jeszcze większą precyzję niż
double
, ale jego rozmiar i dokładność mogą się różnić w zależności od kompilatora i platformy.
4. Typy znakowe
- char: Podstawowy typ danych do przechowywania pojedynczych znaków (liter, cyfr, symboli). Zajmuje 1 bajt i może przechowywać wartości z tablicy ASCII.
- wchar_t: Typ znakowy szeroki, używany do przechowywania znaków Unicode, które wymagają więcej miejsca niż to dostępne w
char
.
5. Typy logiczne
- bool: Typ logiczny przyjmujący jedną z dwóch wartości:
true
lubfalse
. Jest podstawą dla operacji logicznych i warunkowych w C++.
6. Typ void
- void: Specjalny typ danych, który nie przechowuje żadnych wartości. Używany w funkcjach jako typ zwracany, gdy funkcja nie zwraca wartości, oraz jako wskaźnik
void*
do adresu o nieokreślonym typie.
Deklaracja stałych
W C++ stałe można deklarować na kilka sposobów, w zależności od potrzeb i kontekstu użycia:
- Słowo kluczowe
const
umożliwia zdefiniowanie stałej wartości dla danej zmiennej. Na przykład:const int LICZBA_DNI_W_TYGODNIU = 7;
- Makrodefinicje preprocesora, choć obecnie rzadziej stosowane na korzyść
const
iconstexpr
, to inny sposób na definiowanie stałych:#define LICZBA_MIESIECY 12
- Od C++11, słowo kluczowe
constexpr
służy do definiowania wyrażeń, które mogą być obliczone w czasie kompilacji, co jest szczególnie użyteczne dla optymalizacji i definiowania stałych:constexpr double PI = 3.14159;
Podsumowanie
Wybór odpowiedniego typu danych jest kluczowy dla efektywności programu, zarówno pod względem zużycia pamięci,