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, BigInto 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 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 no está definido si el exponente es negativo o requiere más de 32 bits para representar (es decir, si es mayor que 2147483647).

Division and modulus for values of type Int and BigInt follow the following behavior for negative numbers:

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 ay 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 para ese asunto. Esto es importante especialmente para el tipo de datos Result y facilita la restricción de cómo se puede propagar la información en tiempo de ejecución. Tiene la ventaja de evitar errores accidentales, como los relacionados con la pérdida de precisión.