Expressions arithmétiques
Les opérateurs arithmétiques sont l’addition (+
), la soustraction (-
), la multiplication (*
), la division (/
), la négation (-
) et l’élévation à une puissance (^
). Ils peuvent être appliqués à des opérandes de type Int
, BigInt
ou Double
. En outre, pour les types intégraux (Int
et BigInt
), un opérateur calculant le modulo (%
) est disponible.
Pour les opérateurs binaires, les types des deux opérandes doivent correspondre, à l’exception de l’élévation à une puissance (l’exposant d’une valeur de type BigInt
doit être de type Int
). Le type de l’expression entière correspond au type de l’opérande de gauche. Pour l’élévation à une puissance de valeurs Int
ou BitInt
, le comportement n’est pas défini si l’exposant est négatif ou s’il nécessite plus de 32 bits pour être représenté (c’est-à-dire s’il est supérieur à 2 147 483 647).
La division et le modulo pour les valeurs de type Int
et BigInt
respectent le comportement suivant pour les nombres négatifs :
A |
B |
A / B |
A % B |
---|---|---|---|
5 | 2 | 2 | 1 |
5 | -2 | -2 | 1 |
-5 | 2 | -2 | -1 |
-5 | -2 | 2 | -1 |
Autrement dit, a % b
a toujours le même signe que a
et b * (a / b) + a % b
est toujours égal à a
.
Q# ne prend pas en charge les conversions automatiques entre des types de données arithmétiques ou d’autres types de données. Cela revêt une importance particulière pour le type de données Result
et simplifie la restriction selon laquelle les informations d’exécution peuvent se propager. Cela présente l’avantage d’éviter les erreurs accidentelles, par exemple celles liées à une perte de précision.