Partage via


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.