Freigeben über


Arithmetische Operatoren (F#)

In diesem Thema werden in F# verfügbare arithmetische Operatoren beschrieben.

Überblick über binäre arithmetische Operatoren

In der folgenden Tabelle werden die binären arithmetischen Operatoren zusammengefasst, die für nicht geschachtelte ganzzahlige Typen und Gleitkommatypen verfügbar sind.

Binärer Operator

Hinweise

+ (Addition, plus)

Nicht aktiviert:Mögliche Überlaufbedingung, wenn Zahlen addiert werden und die Summe den vom Typ unterstützten maximalen absoluten Wert überschreitet.

- - (Subtraktion, minus)

Nicht aktiviert:Mögliche Unterlaufbedingung, wenn Typen ohne Vorzeichen subtrahiert werden oder wenn Gleitkommawerte zu klein sind, um durch den Typ dargestellt zu werden.

* (Multiplikation, mal)

Nicht aktiviert:Mögliche Überlaufbedingung, wenn Zahlen multipliziert werden und das Produkt den vom Typ unterstützten maximalen absoluten Wert überschreitet.

/ (Division, dividiert durch)

Die Division durch 0 (null) verursacht bei ganzzahligen Typen eine DivideByZeroException.Für Gleitkommatypen liefert die Division durch 0 (null) den speziellen Gleitkommawert +Infinity oder -Infinity.Eine Unterlaufbedingung kann auch auftreten, wenn eine Gleitkommazahl zu klein ist, um durch den Typ dargestellt zu werden.

% (Modulo, mod)

Gibt den Rest einer Division zurück.Das Zeichen des Ergebnisses entspricht dem Zeichen des ersten Operanden.

** (Potenzierung, Potenz von)

Mögliche Überlaufbedingung, wenn das Ergebnis den maximalen absoluten Wert für den Typ überschreitet.

Der Potenzierungsoperator kann nur für Gleitkommatypen verwendet werden.

Überblick über unäre arithmetische Operatoren

In der folgenden Tabelle werden die unären arithmetischen Operatoren zusammengefasst, die für ganzzahlige Typen und Gleitkommatypen verfügbar sind.

Unärer Operator

Hinweise

+ (positiv)

Kann auf jeden arithmetischen Ausdruck angewendet werden.Ändert nicht das Vorzeichen des Werts.

- (Negation, negativ)

Kann auf jeden arithmetischen Ausdruck angewendet werden.Ändert das Vorzeichen des Werts.

Bei einem Überlauf oder Unterlauf für ganzzahlige Typen werden die Werte umbrochen.Dies verursacht ein falsches Ergebnis.Ganzzahlüberlauf ist ein potenziell schwerwiegendes Problem, das zu Sicherheitsproblemen führen kann, wenn Ganzzahlüberlauf in der Software nicht behandelt wird.Wenn dies auf eine Anwendung zutrifft, erwägen Sie die Verwendung der checked-Operatoren in Microsoft.FSharp.Core.Operators.Checked.

Überblick über binäre Vergleichsoperatoren

In der folgenden Tabelle werden die binären Vergleichsoperatoren dargestellt, die für ganzzahlige Typen und Gleitkommatypen verfügbar sind.Diese Operatoren geben Werte vom Typ bool zurück.

Gleitkommazahlen dürfen nie direkt auf Gleichheit überprüft werden, da die IEEE-Gleitkommadarstellung keine Operation für präzise Gleichheit unterstützt.Zwei Zahlen, deren Gleichheit sich durch Überprüfen des Codes leicht bestimmen lässt, können unterschiedliche Bitdarstellungen aufweisen.

Operator

Hinweise

= (Gleichheit, gleich)

Dies ist kein Zuweisungsoperator.Es wird nur für Vergleiche verwendet.Hierbei handelt es sich um einen generischen Operator.

> (größer als)

Hierbei handelt es sich um einen generischen Operator.

< (kleiner als)

Hierbei handelt es sich um einen generischen Operator.

>= (größer oder gleich)

Hierbei handelt es sich um einen generischen Operator.

<= (kleiner oder gleich)

Hierbei handelt es sich um einen generischen Operator.

<> (ungleich)

Hierbei handelt es sich um einen generischen Operator.

Überladene und generische Operatoren

Alle in diesem Thema erläuterten Operatoren werden im Microsoft.FSharp.Core.Operators-Namespace definiert.Einige der Operatoren werden mit statisch aufgelösten Typparametern definiert.Dies bedeutet, dass für jeden spezifischen Typ, der mit dem betreffenden Operator verwendet werden kann, eine individuelle Definition vorhanden ist.Alle unären und binären arithmetischen und bitweisen Operatoren gehören in diese Kategorie.Die Vergleichsoperatoren sind generische Operatoren, daher können sie mit jedem Typ und nicht nur mit primitiven arithmetischen Typen verwendet werden.Unterscheidungs-Union- und Datensatztypen verfügen über eigene benutzerdefinierte Implementierungen, die vom F#-Compiler generiert werden.Für Klassentypen wird die Methode Equals verwendet.

Die generischen Operatoren sind anpassbar.Überschreiben Sie zum Anpassen der Vergleichsfunktionen Equals, um einen eigenen benutzerdefinierten Gleichheitsvergleich bereitzustellen, und implementieren Sie dann IComparable.Die IComparable-Schnittstelle verfügt über eine einzige Methode, die CompareTo-Methode.

Operatoren und Typrückschluss

Durch die Verwendung eines Operators in einem Ausdruck wird der Typrückschluss auf diesen Operator eingeschränkt.Außerdem verhindern Operatoren die automatische Verallgemeinerung, da die Verwendung von Operatoren einen arithmetischen Typ impliziert.In Ermangelung anderer Informationen leitet der F#-Compiler int als Typ arithmetischer Ausdrücke ab.Sie können dieses Verhalten überschreiben, indem Sie einen anderen Typ angeben.So werden im folgenden Code die Argumenttypen und der Rückgabetyp von function1 als int abgeleitet, jedoch werden die Typen für function2 als float abgeleitet.

// x, y and return value inferred to be int
// function1: int -> int -> int
let function1 x y = x + y

// x, y and return value inferred to be float
// function2: float -> float -> float
let function2 (x: float) y = x + y

Siehe auch

Referenz

Symbol- und Operatorenreferenz (F#)

Überladen von Operatoren (F#)

Bitweise Operatoren (F#)

Boolesche Operatoren (F#)