Rekenkundige expressies
Rekenkundige operatoren zijn optellen (+
), aftrekken (-
), vermenigvuldigen (*
), deling (/
), negatie (-
) en exponentatie (^
). Ze kunnen worden toegepast op operanden van het type Int
, BigInt
of Double
. Daarnaast is voor integrale typen (Int
en BigInt
) een operator beschikbaar die de modulus (%
) berekenen.
Voor binaire operatoren moet het type van beide operanden overeenkomen, met uitzondering van exponentiatie; een exponent voor een waarde van het type BigInt
moet van het type Int
zijn. Het type van de hele expressie komt overeen met het type van de linkeroperand. Voor exponentiatie van Int
en BitInt
is het gedrag niet gedefinieerd als de exponent negatief is of meer dan 32 bits nodig heeft om aan te geven (dat wil gezegd, als het groter is dan 2147483647).
Deling en modulus voor waarden van het type Int
en BigInt
volgen het volgende gedrag voor negatieve getallen:
A |
B |
A / B |
A % B |
---|---|---|---|
5 | 2 | 2 | 1 |
5 | -2 | -2 | 1 |
5 | 2 | -2 | -1 |
5 | -2 | 2 | -1 |
Dat wil dat a % b
altijd hetzelfde teken heeft als a
en b * (a / b) + a % b
altijd gelijk is a
aan .
Q# biedt geen ondersteuning voor automatische conversies tussen rekenkundige gegevenstypen of andere gegevenstypen. Dit is met name van belang voor het Result
gegevenstype en vereenvoudigt het beperken van de manier waarop runtime-informatie kan worden doorgegeven. Het heeft het voordeel dat onbedoelde fouten worden voorkomen, zoals fouten met betrekking tot precisieverlies.