Wanneer je verschillende bewerkingen in één uitdrukking combineert, doet C# ze niet zomaar van links naar rechts. Net zoals in de wiskunde gelden er voorrangsregels: vermenigvuldigen en delen gaan vóór optellen en aftrekken.
C# werkt de bewerkingen af in deze volgorde:
| Prioriteit | Bewerking | Symbool |
|---|---|---|
| 1 (hoogste) | haakjes | ( ) |
| 2 | machtsverheffen (ook worteltrekken) | ^ |
| 3 | tekenwisseling (een getal negatief maken) | - |
| 4 | vermenigvuldigen en delen (dezelfde prioriteit) | * / |
| 5 (laagste) | optellen en aftrekken (dezelfde prioriteit) | + - |
Hebben twee bewerkingen dezelfde prioriteit (bijvoorbeeld een * en een
/), dan werkt C# ze af van links naar rechts. Daarom geeft
3 * 4 / 2 * 3 als resultaat 18:
3 * 4 / 2 * 3 = 12 / 2 * 3 = 6 * 3 = 18
Met haakjes kan je die volgorde sturen. 3 * 4 / (2 * 3) rekent eerst de haakjes
uit en geeft 2:
3 * 4 / (2 * 3) = 3 * 4 / 6 = 12 / 6 = 2
Vergeet de gehele deling uit de vorige activiteit niet: zodra alle getallen gehele getallen zijn, valt bij een
/het deel na de komma weg.
%Naast de gewone bewerkingen heeft C# ook de operator % (de modulo). Die
geeft de rest na een gehele deling:
| Uitdrukking | Waarde | Verklaring |
|---|---|---|
30 % 7 | 2 | 30 = 4 × 7 + 2 |
125 % 60 | 5 | 125 = 2 × 60 + 5 |
10 % 8 | 2 | 10 = 1 × 8 + 2 |
1 % 2 | 1 | 1 = 0 × 2 + 1 |
De gehele deling / en de rest % vormen samen een sterk koppel: / geeft je
“hoeveel keer past het erin”, % geeft “wat blijft er over”. Verderop gebruik je
dat om bijvoorbeeld seconden om te zetten naar uren en minuten.
Probeer onderstaande uitdrukkingen eerst zelf uit te rekenen op papier, en klap daarna pas het antwoord open.
3 * 7 - 5 * 2= 21 - 10 = 11 — eerst beide vermenigvuldigingen, dan de aftrekking.
6 * 8 + 7 / 3= 48 + 2 = 50 — 7 / 3 is een gehele deling en geeft 2 (de rest valt
weg), niet 2,33.
(4 + 7) / (8 - 3)= 11 / 5 = 2 — eerst de haakjes (11 en 5), dan een gehele deling die
het deel na de komma laat vallen.
(3 + 7) / (6 - 4)= 10 / 2 = 5.
3 + 7 / 6 - 4= 3 + 1 - 4 = 0 — eerst 7 / 6 (gehele deling, geeft 1), pas daarna
optellen en aftrekken van links naar rechts.
3 - Math.Pow(15, 2) / 20 * 3 (tip: Math.Pow(15, 2) = 15²)Math.Pow(15, 2) is 225. Dan 225 / 20 * 3. Omdat Math.Pow een double
teruggeeft, rekent C# hier verder met kommagetallen: 225 / 20 = 11,25,
× 3 = 33,75, en ten slotte 3 - 33,75 = -30,75. (In het boek staat
-30 als antwoord: dat is de uitkomst als je puur met gehele getallen rekent
(225 / 20 = 11, × 3 = 33, 3 - 33 = -30). Het verschil komt doordat
Math.Pow een kommagetal oplevert — meer over datatypes en casting in de
volgende activiteit.)
Voeg bij elke uitdrukking haakjes toe zodat je de gewenste waarde krijgt.
2 * 3 + 5 moet 11 geven(2 * 3) + 5 — dit is eigenlijk al de gewone volgorde: 6 + 5 = 11.
5 + 2 * 8 - 5 moet 21 geven(5 + 2) * (8 - 5) = 7 * 3 = 21.
5 + 2 * 8 - 5 moet 51 geven((5 + 2) * 8) - 5 = (7 * 8) - 5 = 56 - 5 = 51.
2 * 3 + 5 moet 16 geven2 * (3 + 5) = 2 * 8 = 16.
5 + 2 * 8 - 5 moet 16 geven5 + (2 * 8) - 5 = 5 + 16 - 5 = 16. Dit is opnieuw de gewone volgorde, de
haakjes maken ze enkel zichtbaar.
5 + 2 * 8 - 5 moet 11 geven5 + 2 * (8 - 5) = 5 + 2 * 3 = 5 + 6 = 11.