2. Wbudowane typy danych

2.3. Typy całkowite

Typ całkowity w języku C++ to kategoria typów danych przeznaczonych do przechowywania liczb całkowitych. W C++ dostępnych jest kilka różnych typów całkowitych, różniących się rozmiarem i zakresem wartości, które mogą przechowywać. Możemy wyróżnić następujące typy całkowite:

  • Typ int to podstawowy typ całkowity w C++. We współczesnych systemach typ ten jest zazwyczaj 32-bitowy. Można przechowywać wartości w zakresie od -2,147,483,648 do 2,147,483,647. 
Przykład definicji zmiennej typu int:

int liczba_calkowita;
  • Typ short jest mniejszym typem całkowitym. Przeważnie rozmiar jest 16-bitowy. Może przechowywać wartości w zakresie od -32,768 do 32,767.
Przykład definicji zmiennej typu int:

short liczba_calkowita;
  • Typ long jest większym typem całkowitym. Zazwyczaj jest 32-bitowy na 32-bitowych systemach, ale na 64-bitowych systemach może być 64-bitowy. Dla 32-bitowego systemu zakres wynosi od -2,147,483,648 do 2,147,483,647.
Przykład definicji zmiennej typu long:

long liczba_calkowita;
  • Typ long long jest jeszcze większym typem całkowitym. Jest zazwyczaj 64-bitowy, co oznacza, że może przechowywać wartości w zakresie od -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807.
Przykład definicji zmiennej typu long long:

long long liczba_calkowita;
Wszystkie podane typy zmiennych były zmiennymi ze znakiem. Co to oznacza ze znakiem? Zmienne "ze znakiem" w kontekście typów całkowitych w języku C++ oznaczają, że mogą one przechowywać zarówno liczby dodatnie, jak i ujemne. To rozróżnienie jest ważne, ponieważ pozwala na reprezentowanie pełnego zakresu liczb całkowitych, w tym wartości ujemnych, co jest niezbędne w wielu aplikacjach obliczeniowych.

Zmienne ze znakiem i bez znaku różnią się sposobem zapisu w pamięci komputera. Zmienne ze znakiem używają metody dwójkowego uzupełnienia do reprezentowania liczb ujemnych, co pozwala na reprezentowanie zarówno liczb dodatnich, jak i ujemnych. Zmienne bez znaku przechowują tylko liczby dodatnie, co pozwala na większy zakres dodatnich wartości liczbowych dla tej samej liczby bitów.

W przykładzie poniżej przedsatwiono na przykładzie 4 bitowego zapisu różnice pomiędzy zmiennymi całkowitymi ze znakiem oraz bez znaku.



W C++ typy całkowite mogą być modyfikowane za pomocą specyfikatorów signed i unsigned, aby wyraźnie określić, czy mają przechowywać wartości ujemne i dodatnie, czy tylko dodatnie. Na przykład:

  • signed int jest równoznaczny z int.
  • unsigned int przechowuje tylko liczby dodatnie.
W języku C++ mamy dostępne następujące typy zmiennych bez znaku:
  • Typ unsigned int przechowuje tylko liczby nieujemne. Dla 32-bitowego systemu zakres wynosi od 0 do 4,294,967,295.
Przykład definicji zmiennej typu unsigned int:

unisgned int liczba_calkowita;
  • Typ unsigned short przechowuje liczby nieujemne i zazwyczaj jest 16-bitowy. Zakres wynosi od 0 do 65,535.
Przykład definicji zmiennej typu unsigned short:

unsigned short liczba_calkowita;
  • Typ unsigned long zazwyczaj jest 32-bitowy, a zakres wynosi od 0 do 4,294,967,295.
Przykład definicji zmiennej typu unisgned long:

unsigned long liczba_calkowita;
  • Typ unsigned long long jest zazwyczaj 64-bitowy i może przechowywać wartości w zakresie od 0 do 18,446,744,073,709,551,615.
Przykład definicji zmiennej typu long:

unsigned long long liczba_calkowita;