Compartir a través de


Expresiones aritméticas

Los operadores aritméticos son: suma (+), resta (-), multiplicación (*), división (/), negación (-) y exponenciación (^). Se pueden aplicar a operandos de tipo Int, BigInt o Double. Además, para los tipos enteros (Int y BigInt) hay disponible un operador que calcula el módulo (%).

Para los operadores binarios, el tipo de ambos operandos debe coincidir, excepto para la exponenciación; un exponente para un valor de tipo BigInt siempre debe ser de tipo Int. El tipo de toda la expresión coincide con el tipo del operando izquierdo. Para la exponenciación de Int y BitInt, el comportamiento es indefinido si el exponente es negativo o si requiere más de 32 bits para representarlo (es decir, es mayor que 2147483647).

La división y el módulo para valores de tipo Int y BigInt siguen el comportamiento siguiente para los números negativos:

A B A / B A % B
5 2 2 1
5 -2 -2 1
-5 2 -2 -1
-5 -2 2 -1

Es decir, a % b siempre tiene el mismo signo que a y b * (a / b) + a % b siempre es igual a a.

Q# no admite conversiones automáticas entre tipos de datos aritméticos, ni ningún otro tipo de datos en ese caso. Esto es importante especialmente para el tipo de datos Result y facilita la restricción de la propagación de la información en tiempo de ejecución. Tiene la ventaja de evitar errores accidentales, por ejemplo, los relacionados con la pérdida de precisión.