Typy, które przechowują liczby całkowite: char, short, int, long, long long
Rzućmy okiem na kilka przykładów:
char cvar = 50; char cvar = 50; krótki svar = 50; int ivar = 50; długi lvar1 = 50; długi lvar2 = 50;
Podstawowe operatory arytmetyczne:
Większość zna podstawowe operatory arytmetyczne i kolejność pierwszeństwa: + , -, *, /
Oto kilka przykładów użycia operatora jednoargumentowego: ++ i --:
Wyrażenie | Równoważny | Również odpowiednik |
cvar += 5; | cvar = cvar + 5; | |
++cvar; | cvar++; | cvar = cvar + 1; |
--cvar; | cvar--; | cvar = cvar - 1; |
Uważaj na zmienną ++ a zmienną ++!
++zmienna
int x = 10, y = 20; X = ++y;
Uwaga: po tej operacji: X = 21, a Y również = 21.
zmienna++
int x = 10, y = 20; X = y++;
Uwaga: po tej operacji: X = 20 i Y = 21.
Porównaj typ danych całkowitych
Istnieje grupa lub typ danych, który dopuszcza zarówno wartość dodatnią, jak i ujemną – „ze znakiem”. Jednak nie musisz tego określać, ponieważ jest to niejawne. Zobacz poniżej:
Typ danych | Najmniejsza wartość | Największa wartość |
zwęglać | -2 7 lub -128 | 2 7 - 1 lub 127 |
niski | -2 15 lub -32 768 | 2 15 - 1 lub 32 767 |
int | -2 31 lub -2 147 483 648 | 2 31 – 1 lub 2 147 483 647 |
długie | -2 31 lub -2 147 483 648 | 2 31 – 1 lub 2 147 483 647 |
długo długo | -2 63 lub -9 223 372 036 854 775 808 | 2 63 – 1 lub 9 223 372 036 854 775 807 |
Istnieje grupa lub typ danych, który dopuszcza tylko wartość dodatnią – „bez znaku”.
Typ danych | Najmniejsza wartość | Największa wartość |
znak niepodpisany | 0 | 2 8 - 1 lub 255 |
krótki bez znaku | 0 | 2 16 - 1 lub 65 535 |
niepodpisany | 0 | 2 32 – 1 lub 4 294 967 295 |
długi bez znaku | 0 | 2 32 – 1 lub 4 294 967 295 |
długie długie bez znaku | 0 | 2 64 – 1 lub 18 446 744 073 709 551 615 |
Jak zweryfikować rozmiar danych?
Na razie powinieneś znać operator sizeof()
. Zapewnia to jednostkę pamięci o nazwie „bajty”, która zostanie nieco omówiona w następnej sekcji.
Przykładowa liczba bajtów powinna zostać wpisana przy użyciu operatora sizeof()
. Wypróbuj to, aby samemu je zweryfikować. Jeśli zmienisz kontroler na inny, zawsze możesz wykonać następujące czynności w celu weryfikacji.
Brain.Screen.setFont(fontType::mono30); Brain.Screen.printAt(1, 20,"char ma %d bajtów", sizeof(char)); Brain.Screen.printAt(1, 50,"short ma %d bajty", sizeof(short)); Brain.Screen.printAt(1, 80,"int ma %d bajtów", sizeof(int)); Brain.Screen.printAt(1, 110, "long ma %d bajtów", sizeof(long)); Brain.Screen.printAt(1, 140, "long long ma %d bajtów", sizeof(long long)); Brain.Screen.printAt(1, 170, "float ma %d bajtów", sizeof(float)); Brain.Screen.printAt(1, 200, "double ma %d bajtów", sizeof(double));
Co oznacza bajt?
„Bajt” to standardowa jednostka przechowywania danych.
Jeden bajt = 8 bitów. Jeden bit to najmniejsza jednostka pamięci, która może mieć tylko wartości jedynek i zer (wartość binarna). Ale najmniejsza jednostka pamięci, jaką można uzyskać z systemu, to 1 bajt; więc nie możesz poprosić o 1,5 bajta itp.
Rzućmy okiem na char. Jest wystarczająco krótki, aby można go było łatwo wyświetlić.
Jeśli wszystkie są wypełnione jedynkami, otrzymujesz 28-1. Ta wartość powinna być maksymalną wartością, jaką powinien posiadać „unsigned char”.
System rezerwuje bit najwyższego rzędu w celu podania wartości ujemnej. Tak więc maksymalna wartość „znaku” wynosi od -128 do 127. Jednak pojemność jest nadal taka sama jak „unsigned char” pomimo różnicy w zakresie danych.
W komputerze używa operacji zwanej Uzupełnieniem Dwóch. Jest to część tematów w ramach operacji Bitwise, która jest poza zakresem tego dokumentu. Więcej na ten temat zostanie omówione w innym dokumencie.
Jaka jest różnica między char a int?
Oto kilka typowych zastosowań „char” i „int”:
znak zm1 = „9”; int zm2 = 9;
To powszechne błędne przekonanie, że „char” może zawierać tylko takie symbole, jak „a”, „b” lub „9”. To nieprawda.
W rzeczywistości typ "char" jest taki sam jak typ "int", z wyjątkiem tego, że pojemność char to tylko 1 bajt, a pojemność int to 4 bajty. W związku z tym zakres rozmiarów danych jest różny między tymi dwoma. Widać to w powyższej tabeli zakresów danych.
Poniższe segmenty kodu dają wyraźniejszy obraz znaków i int.
int iX = '0'; char cX1 = 49; char cX2 = 50; Brain.Screen.printAt(3, 20, "int reprezentacja '%c' = %d",iX, iX); Brain.Screen.printAt(3, 50, "int reprezentacja '%c' = %d",cX1, cX1); Brain.Screen.printAt(3, 80, "int reprezentacja '%c' = %d",cX2, cX2); Brain.Screen.printAt(3, 140, "Więc '%c' - '%c' = %d ”, cX2, iX, cX2 - cX1);
Wyjście:
int reprezentacja „0” = 48 int reprezentacja „1” = 49 int reprezentacja „2” = 50 Czyli „2” – „0” = 1
Możesz się zastanawiać: dlaczego „0” pokazuje 48?
Doprowadzi to do tematów zwanych konwersją „Kod ASCII”. Standard ASCII to jeden z wielkich kamieni milowych IEEE opublikowanych w 1963 roku. To wykracza poza zakres tego artykułu. Zachęcamy do sprawdzenia online tabeli kodów ASCII. Znajdziesz mnóstwo informacji online na temat tabeli kodów ASCII.