Tworzenie zmiennych dla liczb całkowitych w VEXcode Pro V5

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));

vartypes.png


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ć.

s.j.jpg

Jeśli wszystkie są wypełnione jedynkami, otrzymujesz 28-1. Ta wartość powinna być maksymalną wartością, jaką powinien posiadać „unsigned char”.

charvalues.jpg

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.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: