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;
char 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 | Odpowiednik | Również równoważne |
|---|---|---|
| zmienna += 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 |
| krótki | -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ługi | -2 31 lub -2 147 483 648 | 2 31 – 1 lub 2 147 483 647 |
| długi długi | -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ść |
|---|---|---|
| unsigned char | 0 | 2 8 - 1 lub 255 |
| niepodpisany krótki | 0 | 2 16 - 1 lub 65 535 |
| unsigned int | 0 | 2 32 – 1 lub 4 294 967 295 |
| długi bez znaku | 0 | 2 32 – 1 lub 4 294 967 295 |
| niepodpisany 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, "char 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, "double ma %d bajtów", sizeof(double));
Tekst wyświetlany na ekranie V5 Brain:
char ma 1 bajt
short ma 2 bajty
int ma 4 bajty
long ma 4 bajty
long long ma 8 bajtów
float ma 4 bajty
double ma 8 bajtówCo 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”:
znak var1 = '9';
int var2 = 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, "reprezentacja typu int liczby '%c' = %d",iX, iX);
Brain.Screen.printAt(3, 50, "reprezentacja typu int liczby '%c' = %d",cX1, cX1);
Brain.Screen.printAt(3, 80, "reprezentacja typu int liczby '%c' = %d",cX2, cX2);
Brain.Screen.printAt(3, 140, "So '%c' - '%c' = %d ", cX2, iX, cX2 - cX1);
Wyjście:
reprezentacja int „0” = 48
reprezentacja int „1” = 49
reprezentacja int „2” = 50
Tak więc „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.