Compartilhar 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 operadores do tipo Int, BigInt ou Double. Além disso, para tipos integrais (Int e BigInt), está disponível um operador que computa o módulo (%).

Para operadores binários, o tipo dos dois operadores precisa o mesmo, exceto para exponenciação. Um expoente de um valor do tipo BigInt precisa ser do tipo Int. O tipo da expressão inteira corresponde ao tipo do operando esquerdo. Para a exponenciação de Int e BitInt, o comportamento será indefinido se o expoente for negativo ou exigir mais de 32 bits para ser declarado (ou seja, se for superior a 2147483647).

Divisão e 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 sempre tem o mesmo sinal que a, e b * (a / b) + a % b é sempre igual a a.

Em Q#, não há suporte para conversões automáticas entre tipos de dados aritméticos nem entre outros tipos de dados relacionados a isso. Isso é importante principalmente para o tipo de dados Result e facilita a restrição de como as informações de runtime podem se propagar. O benefício disso é evitar erros acidentais, como os relacionados à perda de precisão.