The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.
VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.
Typy przechowujące liczby całkowite: char, short, int, long, long long
Rzućmy okiem na kilka przykładów:
char cvar = 50; znaków cvar = 50; krótki svar = 50; int ivar = 50; długie lvar1 = 50; długie lvar2 = 50;
Podstawowe operatory arytmetyczne:
Większość zna podstawowe operatory arytmetyczne i porządek pierwszeństwa: + , -, *, /
Oto kilka przykładów użycia operatora jednoargumentowego: ++ i --:
| Wyrażenie | Równoważne | Również równoważne |
|---|---|---|
| zmienna += 5; | zmienna = zmienna + 5; | |
| ++zmienna; | zmienna++; | zmienna = zmienna + 1; |
| --cvar; | cvar--; | zmienna = zmienna - 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 |
| krótki | -2 15 lub -32 768 | 2 15 - 1 lub 32 767 |
| wew | -2 31 lub -2 147 483 648 | 2 31 – 1 lub 2 147 483 647 |
| długi | -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 bez znaku | 0 | 2 8 - 1 lub 255 |
| krótki bez znaku | 0 | 2 16 - 1 lub 65 535 |
| bez znaku int | 0 | 2 32 – 1 lub 4 294 967 295 |
| długi bez znaku | 0 | 2 32 – 1 lub 4 294 967 295 |
| bez znaku, długi, długi | 0 | 2 64 – 1 lub 18 446 744 073 709 551 615 |
Jak weryfikujecie 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.
Próbka informująca o liczbie bajtów, którą 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,"znak ma %d bajt", 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, "podwójne 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.
Przyjrzyjmy się charowi. Jest wystarczająco krótki, aby można go było łatwo wyświetlić.
Jeśli wszystkie zostaną 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 , aby nadać wartość ujemną. 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 i int?
Oto kilka typowych zastosowań „char” i „int”:
char zmienna1 = '9'; int zmienna2 = 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'; znaków cX1 = 49; znak 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 Zatem „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.