- 1 bajt == 8 bitów
-
W binarnym totolotku wylosowane liczby mogą mieć
0
lub1
-
Zatem podczas losowania 8 numerków możemy otrzymać przykładowo:
1 0 1 0 1 0 1 0
-
Takich kombinacji jest dokładnie
256 -> (2^8)
- Zatem na 1 bajcie (8 bitach) możemy zapisać 256 liczb, np. od 0 do 255
-
Jeżeli w totolotku losujemy 32 numerki, (32/8 = 4) czyli 4 bajty to takich kombinacji jest
2^32
(czyli ponad 4 miliardy)
-
Nie można tworzyć obiektów typu
void
- Służy do zaznaczenia, że funkcja nic nie zwraca
-
Można tworzyć wskaźniki
void*
(zła praktyka w C++) - NIE służy do oznaczania, że funkcja nie przyjmuje argumentów
int fun(void) { /* ... */ } // bad practice, C style
int fun() { /* ... */ } // good practice, C++ style
- Rozmiar: co najmniej 1 bajt (zazwyczaj równy właśnie 1)
sizeof(bool) >= 1
- 2 możliwe wartości
false
true
- Rozmiar: 1 bajt
- 256 możliwych wartości
char
-> od-128
do127
unsigned char
-> od0
do255
Przedrostek unsigned
oznacza, że typ jest bez znaku (bez liczb ujemnych), czyli od 0 do jakieś dodatniej wartości.
Rozmiar typów znakowych to zawsze 1 bajt.
Rozmiary dalszych typów zależą od platformy np. 32 bity, 64 bity.
short (unsigned short)
- co najmniej 2 bajtyint (unsigned int)
- co najmniej 2 bajtylong (unsigned long)
- co najmniej 4 bajtylong long (unsigned long long)
- co najmniej 8 bajtów
float
- zwykle 4 bajtydouble
- zwykle 8 bajtówlong double
- zwykle 10 bajtów (rzadko stosowany)- Typy zmiennoprzecinkowe zawsze mogą mieć ujemne wartości (nie istnieją wersje unsigned)
- Posiadają specjalne wartości:
0
,-0
(ujemne zero)-Inf
,+Inf
(Infinity, nieskończoność)NaN
(Not a Number)
Uwaga! Porównanie NaN == NaN
daje false
Zaawansowana lektura: Standard IEEE754 definiujący typy zmiennoprzecinkowe
Standard C++ definiuje taką zależność pomiędzy rozmiarami typów całkowitoliczbowych
1 == sizeof(char) \
<= sizeof(short) \
<= sizeof(int) \
<= sizeof(long) \
<= sizeof(long long);
W pewnych miejscach możemy użyć typu auto
. Kompilator sam wydedukuje typ, np. na podstawie przypisanej wartości.
auto num = 5; // int
auto num = 5u; // unsigned int
auto num = 5.5; // double
auto num = 5.f; // float
auto letter = 'a'; // char
auto num = false; // bool
auto sth; // compilation error, unable to deduce type
Kim jest Hobbit?
Jest to 1/8 Hobbajta :)