Freigeben über


Arithmetische Ausdrücke

Arithmetische Operatoren sind Addition (+), Subtraktion (-), Multiplikation (*), Division (/), Negation (-) und Potenzierung (^). Sie können auf Operanden vom Typ Int, BigIntoder Doubleangewendet werden. Darüber hinaus ist für integrale Typen (Int und BigInt) ein Operator verfügbar, der den Modulus (%) berechnen kann.

Bei binären Operatoren muss der Typ beider Operanden übereinstimmen – außer bei der Potenzierung. Ein Exponent für einen Wert vom Typ BigInt muss vom Typ Int sein. Der Typ des gesamten Ausdrucks entspricht dem Typ des linken Operanden. Für die Potenzierung von Int und BitInt ist das Verhalten nicht definiert, wenn der Exponent negativ ist oder mehr als 32 Bits zur Darstellung benötigt (also größer als 2.147.483.647 ist).

Division und Modulus für Werte vom Typ Int und BigInt Befolgen des folgenden Verhaltens für negative Zahlen:

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

a % b hat also immer das gleiche Vorzeichen wie a, und b * (a / b) + a % b ist immer gleich a.

Q# unterstützt keine automatischen Konvertierungen zwischen arithmetischen Datentypen (oder anderen Datentypen). Dies ist insbesondere für den Result-Datentyp von Bedeutung und erleichtert die Einschränkung der Weitergabe von Laufzeitinformationen. Das hat den Vorteil, dass versehentliche Fehler vermieden werden, z. B. im Zusammenhang mit Genauigkeitsverlusten.