Partilhar via


Expressões aritméticas

Os operadores aritméticos são adição (+), subtração (-), multiplicação (*), divisão (/), negação (-) e exponenciação (^). Podem ser aplicados a operandos do tipo Int, BigIntou Double. Além disso, para tipos integrais (Int e BigInt), está disponível um operador que computa o modulus (%).

Para os operadores binários, o tipo de ambos os operandos tem de corresponder, exceto para a exponenciação; um expoente para um valor de tipo BigInt tem de ser do tipo Int. O tipo de expressão inteira corresponde ao tipo de operando esquerdo. Para a exponenciação de Int e BitInt, o comportamento é indefinido se o expoente for negativo ou precisar de mais de 32 bits para representar (ou seja, se for maior do que 2147483647).

Divisão e modulus para valores do tipo Int e BigInt siga o seguinte comportamento para 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

Ou seja, a % b tem sempre o mesmo sinal de ae b * (a / b) + a % b é sempre igual aa .

Q# não suporta conversões automáticas entre tipos de dados aritméticos ou outros tipos de dados. Isto é importante especialmente para o Result tipo de dados e facilita a restrição da forma como as informações de runtime podem ser propagadas. Tem o benefício de evitar erros acidentais, como os relacionados com a perda de precisão.