Da Sie kein Suffix verwenden, werden die Literale 13
und 4
als Ganzzahl interpretiert:
Handbuch :
Wenn die wörtliche kein Suffix hat, hat es die erste dieser Art in dem sein Wert dargestellt werden kann int
, uint
, long
, ulong
.
Da Sie also 13
eine Ganzzahl deklarieren , wird eine Ganzzahldivision durchgeführt:
Handbuch :
Für eine Operation der Form x / y wird eine Überlastungsauflösung für binäre Operatoren angewendet, um eine bestimmte Operatorimplementierung auszuwählen. Die Operanden werden in die Parametertypen des ausgewählten Operators konvertiert, und der Typ des Ergebnisses ist der Rückgabetyp des Operators.
Die vordefinierten Divisionsoperatoren sind unten aufgeführt. Die Operatoren berechnen alle den Quotienten aus x und y.
Ganzzahlige Teilung:
int operator /(int x, int y);
uint operator /(uint x, uint y);
long operator /(long x, long y);
ulong operator /(ulong x, ulong y);
Und so kommt es zu einer Abrundung:
Die Division rundet das Ergebnis gegen Null, und der Absolutwert des Ergebnisses ist die größtmögliche Ganzzahl, die kleiner als der Absolutwert des Quotienten der beiden Operanden ist. Das Ergebnis ist Null oder positiv, wenn die beiden Operanden das gleiche Vorzeichen haben, und Null oder negativ, wenn die beiden Operanden entgegengesetzte Vorzeichen haben.
Wenn Sie Folgendes tun:
int x = 13f / 4f;
Sie erhalten einen Compilerfehler, da eine Gleitkommadivision (der /
Operator von 13f
) zu einem Gleitkomma führt, das nicht implizit in int umgewandelt werden kann.
Wenn Sie möchten, dass die Division eine Gleitkommadivision ist, müssen Sie das Ergebnis zu einem Float machen:
float x = 13 / 4;
Beachten Sie, dass Sie immer noch Ganzzahlen teilen, die implizit in float umgewandelt werden: Das Ergebnis ist 3.0
. Um die Operanden explizit als float zu deklarieren, verwenden Sie das f
Suffix ( 13f
, 4f
).
integer
Teilung ist, nichtfloating point
Teilung.