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

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

usignedchar.jpg

Jeśli wszystko zostanie wypełnione jedynkami, otrzymasz 28-1. Ta wartość powinna być maksymalną wartością, jaką może przechowywać „unsigned char”.

wartości char.jpg

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.

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

Last Updated: