Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
, BigInt
ou 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.