Puisque vous n'utilisez aucun suffixe, les littéraux 13
et 4
sont interprétés comme un entier:
Manuel :
Si le littéral n'a pas de suffixe, il a le premier de ces types dans lesquels sa valeur peut être représentée: int
, uint
, long
, ulong
.
Ainsi, puisque vous déclarez 13
comme entier, la division entière sera effectuée:
Manuel :
Pour une opération de la forme x / y, la résolution de surcharge d'opérateur binaire est appliquée pour sélectionner une implémentation d'opérateur spécifique. Les opérandes sont convertis en types de paramètres de l'opérateur sélectionné et le type du résultat est le type de retour de l'opérateur.
Les opérateurs de division prédéfinis sont répertoriés ci-dessous. Les opérateurs calculent tous le quotient de x et y.
Division entière:
int operator /(int x, int y);
uint operator /(uint x, uint y);
long operator /(long x, long y);
ulong operator /(ulong x, ulong y);
Et donc l'arrondissement se produit:
La division arrondit le résultat vers zéro et la valeur absolue du résultat est le plus grand entier possible qui est inférieur à la valeur absolue du quotient des deux opérandes. Le résultat est zéro ou positif lorsque les deux opérandes ont le même signe et zéro ou négatif lorsque les deux opérandes ont des signes opposés.
Si vous procédez comme suit:
int x = 13f / 4f;
Vous recevrez une erreur du compilateur, car une division en virgule flottante (l' /
opérateur de 13f
) entraîne un flottant, qui ne peut pas être converti implicitement en int.
Si vous voulez que la division soit une division à virgule flottante, vous devrez faire du résultat un flottant:
float x = 13 / 4;
Notez que vous diviserez toujours des entiers, qui seront implicitement convertis en float: le résultat sera 3.0
. Pour déclarer explicitement les opérandes comme float, en utilisant le f
suffixe ( 13f
, 4f
).
integer
division pasfloating point
division.