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ą++ i ++zmienną!
++zmienna
int x = 10, y = 20; X = ++y;
Uwaga: po tej operacji: X = 21, a Y także = 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”. Nie musisz tego jednak określać, ponieważ jest to ukryte. 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 zwaną „bajtami” – która zostanie nieco omówiona w następnej sekcji.
Przykład informujący, ile bajtów należy wpisać, używając operatora sizeof()
. Wypróbuj to, aby zweryfikować je samodzielnie. Jeśli zmienisz kontroler na inny, zawsze możesz wykonać następujące czynności, aby to zweryfikować.
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 przyjmować tylko wartości 1 i 0 (wartość binarna). Jednak najmniejsza jednostka pamięci, jaką można pozyskać 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 wszystko zostanie wypełnione jedynkami, otrzymasz 28-1. Ta wartość powinna być maksymalną wartością, jaką może przechowywać „unsigned char”.
System rezerwuje bit najwyższego rzędu w celu nadania wartości ujemnej. Zatem maksymalna wartość „znaku” waha się od -128 do 127. Jednak pojemność jest nadal taka sama jak w przypadku „unsigned char” pomimo różnicy w zakresie danych.
W komputerze wykorzystuje operację zwaną Dopełnieniem Dwóch. Jest to część tematów w sekcji Operacje bitowe, które wykraczają poza zakres 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;
Powszechnie panuje błędne przekonanie, że „char” może zawierać tylko takie symbole, jak „a”, „b” lub „9”. To nieprawidłowe.
W rzeczywistości typ „char” jest taki sam jak typ „int”, z tą różnicą, że pojemność char wynosi tylko 1 bajt, a pojemność int wynosi 4 bajty. Zatem zakres wielkości danych jest różny w obu przypadkach. Można to zobaczyć w powyższej tabeli zakresów danych.
Poniższe segmenty kodu dadzą ci wyraźniejszy obraz char 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ą „kodu ASCII”. Standard ASCII to jeden z kamieni milowych IEEE opublikowany w 1963 roku. To wykracza poza zakres tego artykułu. Zachęcamy do sprawdzenia tabeli kodów ASCII w Internecie. W Internecie znajdziesz mnóstwo informacji na temat tabeli kodów ASCII.