Variabelen maken voor gehele getallen in VEXcode Pro V5

Typen die gehele getallen bevatten: char, short, int, long, long long

Laten we een paar voorbeelden bekijken:

char cvar = 50;
char cvar = 50;
kort svar = 50;
int ivar = 50;
lang lvar1 = 50;
lang lvar2 = 50;

Basis rekenkundige operatoren:

De meesten zijn bekend met de elementaire rekenkundige operatoren en de prioriteitsvolgorde: + , -, *, /

Hier zijn enkele voorbeelden van het gebruik van de Unary-operator: ++ en --:

Uitdrukking Gelijkwaardig aan Ook gelijk aan
cvar += 5; cvr = cvr + 5;  
++cvar; cvar++; cvr = cvr + 1;
--cvar; cvar--; cvar = cvar - 1;
Pas op voor de variabele++ vs.++variabele!

++variabele

int x = 10, y = 20; 
X = ++y;

Opmerking: na deze bewerking: X = 21, en Y ook = 21.

variabele++

int x = 10, y = 20; 
X = y++;

Opmerking: na deze bewerking: X = 20 en Y = 21.


Gegevenstype geheel getal vergelijken

Er is een groep- of gegevenstype dat zowel positieve als negatieve waarden toestaat - 'ondertekend'. U hoeft dit echter niet op te geven, omdat het impliciet is. Zie onder:

Data type Kleinste waarde Grootste waarde
char -2 7 of -128 2 7 - 1 of 127
kort -2 15 of -32.768 2 15 - 1 of 32.767
int -2 31 of -2.147.483.648 2 31 – 1 of 2.147.483.647
lang -2 31 of -2.147.483.648 2 31 – 1 of 2.147.483.647
lang Lang -2 63 of -9.223.372.036.854.775.808 2 63 – 1 of 9.223.372.036.854.775.807

Er is een groep- of gegevenstype dat alleen een positieve waarde toestaat - "niet-ondertekend".

Data type Kleinste waarde Grootste waarde
Ongetekend char 0 2 8 - 1 of 255
niet-ondertekende short 0 2 16 - 1 of 65.535
niet aangemeld 0 2 32 – 1 of 4.294.967.295
niet ondertekend lang 0 2 32 – 1 of 4.294.967.295
niet ondertekend lang lang 0 2 64 – 1 of 18.446.744.073.709.551.615

Hoe verifieert u de gegevensgrootte?

Voorlopig moet u de operator sizeof( ) kennen. Dit levert de geheugenopslageenheid genaamd "bytes" op - die in de volgende sectie enigszins zal worden behandeld.

Voorbeeld om u te vertellen hoeveel bytes u moet typen met de operator sizeof(). Probeer dit uit om ze zelf te verifiëren. Als u overstapt naar een andere controller, kunt u altijd het volgende doen om dit te verifiëren.

Brain.Screen.setFont(fontType::mono30);    
Brain.Screen.printAt(1, 20,"char heeft %d bytes", sizeof(char));
Brain.Screen.printAt(1, 50,"short has %d bytes", sizeof(short)); 
Brain.Screen.printAt(1, 80,"int heeft %d bytes", sizeof(int));
Brain.Screen.printAt(1, 110, "long has %d bytes", sizeof(long));
Brain.Screen.printAt(1, 140, "long long has %d bytes", sizeof(long long));
Brain.Screen.printAt(1, 170, "float has %d bytes", sizeof(float));
Brain.Screen.printAt(1, 200, "double has %d bytes", sizeof(double));

vartypes.png


Wat betekent een byte?

Een "Byte" is een standaardeenheid voor gegevensopslag.

Eén byte = 8 bits. Eén bit is de kleinste geheugeneenheid die alleen de waarde 1s en 0s (binaire waarde) kan hebben. Maar de kleinste geheugeneenheid die u van het systeem kunt verkrijgen, is 1 byte; dus je kunt niet vragen om 1,5 byte, enz.

Laten we eens kijken naar char. Het is kort genoeg om gemakkelijk weer te geven.

usignedchar.jpg

Als het allemaal gevuld is met enen, krijg je 28-1. Deze waarde moet de maximale waarde zijn die "unsigned char" mag bevatten.

charvalues.jpg

Het systeem reserveert de bit van de hoogste orde om een negatieve waarde te geven. De maximale waarde voor een "char" varieert dus van -128 tot 127. De capaciteit is echter nog steeds hetzelfde als "unsigned char", ondanks een verschil in het gegevensbereik.

In de computer gebruikt het een bewerking die het Twee's Complement wordt genoemd. Dit maakt deel uit van de onderwerpen onder Bitwise-bewerking, wat buiten het bestek van dit document valt. Meer over dit onderwerp zal in een ander document worden besproken.


Wat is het verschil tussen char en int?

Hier zijn enkele veelvoorkomende toepassingen voor "char" en "int":

char var1 = '9'; 
int var2 = 9;

Het is een algemene misvatting dat 'char' alleen symbolen kan bevatten zoals 'a', 'b' of '9'. Dat is onjuist.

In feite is het type "char" hetzelfde als het type "int", behalve dat de capaciteit van char slechts 1 byte is en de capaciteit van int 4 bytes. Het bereik van de gegevensgrootte is dus verschillend tussen de twee. U kunt dat zien in de bovenstaande tabel met gegevensbereiken.

De volgende codesegmenten geven u een duidelijker beeld van char en int.

int iX = '0';
  char cX1 = 49;
  teken cX2 = 50; 

  Brain.Screen.printAt(3, 20, "int representatie van '%c' =  %d",iX, iX);
  Brain.Screen.printAt(3, 50, "int representatie van '%c' =  %d",cX1, cX1);
  Brain.Screen.printAt(3, 80, "int representatie van '%c' =  %d",cX2, cX2);
  Brain.Screen.printAt(3, 140, "So '%c' - '%c' =  %d ", cX2, iX, cX2 - cX1);

Uitgang:

int weergave van '0' = 48
int weergave van '1' = 49
int weergave van '2' = 50

Dus '2' – '0' = 1

U vraagt zich misschien af: waarom toont '0' 48?

Dit zal leiden tot de onderwerpen genaamd "ASCII-code" conversie. De ASCII-standaard is een geweldige IEEE-mijlpaal die in 1963 werd gepubliceerd. Dit valt buiten het bestek van dit artikel. U wordt aangemoedigd om de ASCII-codetabel online op te zoeken. U vindt online een overvloed aan informatie over de ASCII-codetabel.