W tej lekcji dowiesz się, czym są typy całkowite w C++. Typy całkowite to zmienne, które przechowują liczby bez części dziesiętnych, takie jak 1, -42 czy 1000. W C++ mamy kilka różnych typów całkowitych, które różnią się zakresem przechowywanych wartości oraz ilością pamięci, jaką zajmują. Każdy typ całkowity ma swój maksymalny i minimalny zakres, który określa, jak dużą lub małą wartość można w nim zapisać.
Podstawowe Typy Całkowite w C++
int
– Najczęściej używany typ zmiennych całkowitych. W większości kompilatorów zajmuje 4 bajty (32 bity) i ma zakres od -2,147,483,648 do 2,147,483,647.short
– Typ całkowity o mniejszym zakresie. Zwykle zajmuje 2 bajty (16 bitów) i ma zakres od -32,768 do 32,767.long
– Typ całkowity o większym zakresie niżint
. Zajmuje przynajmniej 4 bajty, ale na niektórych platformach może mieć 8 bajtów.long long
– Typ całkowity o bardzo dużym zakresie. Zwykle zajmuje 8 bajtów (64 bity) i może przechowywać wartości od -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807.unsigned
– Służy do oznaczenia zmiennych, które mogą przyjmować tylko wartości dodatnie. Na przykład,unsigned int
ma zakres od 0 do 4,294,967,295.
Poniżej przedstawiamy przykład kodu, który ilustruje różne typy całkowite i ich zakresy.
Kod C++
#include <iostream>
#include <climits> // Zawiera stałe określające zakresy typów całkowitych
int main() {
// Deklaracja zmiennych różnych typów całkowitych
int myInt = 100; // Zmienna typu 'int' o wartości 100
short myShort = 200; // Zmienna typu 'short' o wartości 200
long myLong = 100000L; // Zmienna typu 'long' o wartości 100000
long long myLongLong = 123456789LL; // Zmienna typu 'long long' o dużej wartości
unsigned int myUnsignedInt = 300; // Zmienna typu 'unsigned int' o wartości 300
// Wyświetlanie wartości zmiennych
std::cout << "Wartość myInt: " << myInt << std::endl;
std::cout << "Wartość myShort: " << myShort << std::endl;
std::cout << "Wartość myLong: " << myLong << std::endl;
std::cout << "Wartość myLongLong: " << myLongLong << std::endl;
std::cout << "Wartość myUnsignedInt: " << myUnsignedInt << std::endl;
// Wyświetlanie zakresów typów przy użyciu stałych z biblioteki <climits>
std::cout << "Zakres typu 'int': od " << INT_MIN << " do " << INT_MAX << std::endl;
std::cout << "Zakres typu 'short': od " << SHRT_MIN << " do " << SHRT_MAX << std::endl;
std::cout << "Zakres typu 'long': od " << LONG_MIN << " do " << LONG_MAX << std::endl;
std::cout << "Zakres typu 'long long': od " << LLONG_MIN << " do " << LLONG_MAX << std::endl;
std::cout << "Zakres typu 'unsigned int': od 0 do " << UINT_MAX << std::endl;
// Przykład przepełnienia zmiennej całkowitej
myInt = INT_MAX; // Przypisanie maksymalnej wartości dla 'int'
std::cout << "Maksymalna wartość typu 'int': " << myInt << std::endl;
myInt = myInt + 1; // Przekroczenie zakresu typu 'int'
std::cout << "Po przekroczeniu zakresu typu 'int': " << myInt << std::endl;
return 0; // Zakończenie programu
}
Jak działa program
- Program zaczyna się od zaimportowania biblioteki
iostream
, która pozwala na operacje wejścia/wyjścia, orazclimits
, która zawiera stałe definiujące zakresy różnych typów całkowitych, takich jakINT_MIN
,INT_MAX
. - Następnie deklaruje różne typy zmiennych całkowitych:
int myInt
o wartości 100.short myShort
o wartości 200.long myLong
o wartości 100000.long long myLongLong
o dużej wartości 123456789.unsigned int myUnsignedInt
o wartości 300, która może przechowywać tylko liczby nieujemne.
- Program wyświetla wartości tych zmiennych za pomocą
std::cout
. - Program używa stałych z biblioteki
<climits>
do wyświetlenia zakresów każdego typu zmiennej. Na przykład,INT_MIN
iINT_MAX
pokazują minimalną i maksymalną wartość, jaką może przechowywać typint
. - Następnie pokazuje, jak działa przepełnienie zmiennej:
- Ustawia wartość zmiennej
myInt
na jej maksymalną wartość (INT_MAX
). - Dodaje 1 do tej wartości, co powoduje przekroczenie zakresu typu
int
. Wynik przepełnienia zależy od architektury komputera, ale najczęściej prowadzi do “zawinięcia” wartości, co skutkuje negatywną liczbą.
- Ustawia wartość zmiennej
- Program kończy się zwróceniem wartości 0, co oznacza, że zakończył się pomyślnie.
Podsumowanie
W tej lekcji dowiedziałeś się o różnych typach całkowitych w C++ i ich zakresach. Wiesz już, że:
int
to najbardziej powszechny typ całkowity.short
ma mniejszy zakres niżint
.long
ilong long
mogą przechowywać bardzo duże wartości.unsigned
pozwala na przechowywanie tylko liczb dodatnich, co zwiększa maksymalny zakres.- Zakres każdego typu można sprawdzić za pomocą stałych z biblioteki
<climits>
. - Przekroczenie zakresu zmiennej może prowadzić do przepełnienia, co może skutkować nieoczekiwanym zachowaniem programu.
Dzięki zrozumieniu różnych typów całkowitych w C++ będziesz w stanie dobrać odpowiedni typ zmiennej do danych, jakie chcesz przechowywać w swoich programach.