Tworzenie zmiennych dla liczb całkowitych w VEXcode Pro V5

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żny 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 typu całkowitego

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

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

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.

Przyjrzyjmy się charowi. Jest wystarczająco krótki, aby można go było łatwo wyświetlić.

usignedchar.jpg

Jeśli wszystkie zostaną 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 , 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 chari 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.

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

Last Updated: