Typy danych

MKF

Typy podstawowe

W C++ możemy tworzyć własne typy danych lub korzystać z podstawowych. Tabelka przedstawia listę typów podstawowych:
Typ Rozmiar Zakres Uwagi
signed unsigned
[[C/bool]] 1 bit przyjmuje wartość [[C/True|true]] albo [[C/False|false]]
[[C/char]] 1 bajt -128
127
0
255
[[C/wchar_t]] 2 bajty 1 znak Unicode reprezentuje znak Unicode
[[C/int]] 2 lub 4 bajty zależnie od rozmiaru, taki jak: short lub long int rozmiar zależy od kompilatora
[[C/short]] [[C/int]] 2 bajty -32768
32767
0
65535
[[C/long]] [[C/int]] 4 bajty -2147483648
2147483647
0</b>
4294967295
[[C/long]] [[C/long]] [[C/int]] 8 bajtów -9223372036854775808
9223372036854775807
0
18446744073709551615
[[C/float]] 4 bajty 3.4e +/- 38 (7 znaków) typ zmiennoprzecinkowy
[[C/double]] 8 bajtów 1.7e +/- 308 (15 znaków) typ zmiennoprzecinkowy
[[C/long]] [[C/double]] 8, 10 lub 12 bajtów 1.7e +/- 308 (15 znaków) typ zmiennoprzecinkowy
[[C/void]] reprezentuje brak typu

Deklarowanie zmiennej danego typu wygląda tak:

[modyfikator] nazwa_typu nazwa_zmiennej;
Przykład:

int liczba;
unsigned char bajt;
const float PI = 3.141;

Typy pochodne

Typy pochodne to typy o dodatkowych właściwościach, zazwyczaj bazujące na typach podstawowych.

Typ wyliczeniowy

Określa wartości jakie zmienne tego typu mogą przyjąć:
enum nazwa_typu {wartosc_pierwsza, wartosc_druga};

Więcej typów pochodnych: Tablice, Wskaźniki, Struktury, Unie, Pola bitowe

Modyfikatory

Zmienne typów podstawowych mogą posiadać tzw. modyfikator, czyli instrukcję która dokładniej opisuje kompilatorowi właściwości zmiennej.

signed i unsigned

Są to modyfikatory określające czy dana zmienna będzie mogła przechowywać liczby ujemne czy nie. Zazwyczaj kompilator domyślnie przypisuje modyfikator signed do nowo zadeklarowanej zmiennej.
unsigned int a = -123; // BŁĄD, użyto modyfikatora unsigned więc zmienna nie obsługuje liczb ujemnych
signed long b = -321; // prawidłowy zapis

Więcej modyfikatorów: Const, Register, Static, Volatile, Auto

Zobacz też:

8 komentarzy

Manfredek, przeczytaj swoje pytanie jeszcze raz i się nad nim zastanów. Albo daj se spokój z programowaniem.

Od kiedy typy inne niż void i bool mają określone zakresy?

Nie to, żebym się czepiał, ale podejrzewam tu kilka błędów.
Po 1. BOOL nie zajmie w praktyce nigdy jednego bita, gdyż najmniejszą jednostką alokacji pamięci jest jeden BAJT. Poprawcie mnie, jeśli się mylę.

Po 2. Znak w UTF może mieć nawet 4B. Więc co dokładnie przechowuje wchar?

Przykład, jak działa "bool" byłby mile widziany :P

czemu tu nie tlumacza

poprawione :P nie domkniety tag był :]

niech ktoś to przeniesie we właściwe miejsce

hmm.. gdzie Szczawik i jego parser nowy? jak to tak, że zły kod w arcie wpływa na resztę strony - nawet stopka jest podkreślona :D

Mam nadzieję, że coś z tego powstanie sensowniejszego...