Dela via


Aritmetiska uttryck

Aritmetiska operatorer är addition (+), subtraktion (-), multiplikation (*), division (/), negation (-) och exponentiation (^). De kan tillämpas på operander av typen Int, BigInteller Double. För integraltyper (Int och BigInt) är dessutom en operatör som beräknar modulus (%) tillgänglig.

För binära operatorer måste typen av båda operanderna matcha, förutom exponenteringen. en exponent för ett värde av typen BigInt måste vara av typen Int. Typen av hela uttrycket matchar typen av den vänstra operanden. För exponentiation av Int och BitIntär beteendet odefinierat om exponenten är negativ eller kräver mer än 32 bitar för att representera (dvs. om den är större än 2147483647).

Division och modulus för värden av typen Int och BigInt följ följande beteende för negativa tal:

A B A / B A % B
5 2 2 1
5 -2 -2 1
-5 2 -2 -1
-5 -2 2 -1

Det innebär a % b att alltid har samma tecken som a, och b * (a / b) + a % b är alltid lika med a.

Q# stöder inte automatiska konverteringar mellan aritmetiska datatyper eller andra datatyper för den delen. Detta är särskilt viktigt för Result datatypen och gör det enklare att begränsa hur körningsinformation kan spridas. Det har fördelen att undvika oavsiktliga fel, till exempel sådana som rör precisionsförlust.