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 (^). Eles podem ser aplicados a operandos do tipo Int, BigIntou Double. Além disso, para os tipos integrais (Int e BigInt), um operador que calcula o módulo (%) está disponível.

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

A divisão e o módulo para valores do tipo Int e BigInt seguem 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 que a, e b * (a / b) + a % b sempre é igual a a.

Q# não suporta conversões automáticas entre tipos de dados aritméticos ou quaisquer outros tipos de dados. Isso é importante especialmente para o tipo de dados Result e facilita a restrição de como as informações de tempo de execução podem se propagar. Tem a vantagem de evitar erros acidentais, como os relacionados com a perda de precisão.