Partilhar via


Operadores aritméticos (F#)

Este tópico descreve os operadores aritméticos que estão disponíveis no idioma F#.

Resumo dos operadores aritméticos binários

A tabela a seguir resume os operadores aritméticos binários que estão disponíveis para desemoldurado tipos integrais e de ponto flutuante.

Operador binário

Anotações

+(adição, plus)

Unchecked (Desmarcada).Possível condição de estouro quando os números são adicionados juntos e a soma excede o máximo valor absoluto suportado pelo tipo.

-(subtração, sinal de subtração)

Unchecked (Desmarcada).Estouro negativo de possível condição quando tipos sem sinal são subtraídos, ou quando os valores de ponto flutuante são muito pequenos para ser representado pelo tipo.

*(multiplicação, vezes)

Unchecked (Desmarcada).Possível condição de estouro quando os números são multiplicados e o produto excede o máximo valor absoluto suportado pelo tipo.

/(divisão, dividida por)

Divisão por zero faz com que uma DivideByZeroException para tipos integrais.Para tipos de ponto flutuante, divisão por zero dá os valores de ponto flutuante especiais +Infinity ou -Infinity.Há também uma condição de estouro de negativo possível quando um número de ponto flutuante é muito pequeno para ser representado pelo tipo.

%(módulo, mod)

Retorna o resto de uma operação de divisão.O sinal do resultado é o mesmo que o sinal do primeiro operando.

**(exponenciação, à potência de)

Possível condição de estouro quando o resultado excede o máximo valor absoluto para o tipo.

O operador de exponenciação só funciona com tipos de ponto flutuante.

Resumo dos operadores unários aritmética

A tabela a seguir resume os operadores aritméticos unário que estão disponíveis para os tipos integrais e de ponto flutuante.

Operador unário

Anotações

+(positivo)

Pode ser aplicado a qualquer expressão aritmética.Não altera o sinal do valor.

-(negação, negativa)

Pode ser aplicado a qualquer expressão aritmética.Altera o sinal do valor.

O comportamento no estouro positivo ou para tipos integrais é disposto ao redor.Isso faz com que um resultado incorreto.Estouro de inteiros é um problema potencialmente grave que pode contribuir para problemas de segurança quando o software não é gravado para levar em conta para ele.Se esta for uma preocupação para seu aplicativo, considere o uso de operadores de verificação no Microsoft.FSharp.Core.Operators.Checked.

Resumo dos operadores de comparação binários

A tabela a seguir mostra os operadores de comparação binários que estão disponíveis para os tipos integrais e de ponto flutuante.Esses operadores retornam valores do tipo bool.

Números de ponto flutuante nunca devem ser comparados diretamente de igualdade, porque a representação de ponto flutuante IEEE não oferece suporte a uma operação de igualdade exata.Dois números que você pode facilmente verificar para ser igual inspecionando o código, na verdade, podem ter representações diferentes de bit.

Operador

Anotações

=(igual a igualdade)

Isso não é um operador de atribuição.Ele é usado apenas para comparação.Este é um operador genérico.

>(maior que)

Este é um operador genérico.

<(menor que)

Este é um operador genérico.

>=(maior que ou igual a)

Este é um operador genérico.

<=(menor que ou igual a)

Este é um operador genérico.

<>(não igual)

Este é um operador genérico.

Operadores sobrecarregados e genéricos

Todos os operadores discutidos neste tópico são definidos na Microsoft.FSharp.Core.Operators espaço para nome.Alguns dos operadores são definidos usando os parâmetros de tipo estaticamente resolvido.Isso significa que há definições individuais para cada tipo específico que funciona com esse operador.Todos os operadores aritméticos e bit a bit de binários e unários estão nesta categoria.Os operadores de comparação são genéricos e portanto funcionam com qualquer tipo, tipos primitivos não apenas de aritméticos.União discriminada e tipos de registro têm suas próprias implementações personalizadas que são geradas pelo compilador F#.Tipos de classe usam o método Equals.

Os operadores genéricos são personalizáveis.Para personalizar as funções de comparação, substituir Equals para fornecer sua própria comparação igualdade personalizado e, em seguida, implementar IComparable.O IComparable interface possui um único método, o CompareTo método.

Inferência de tipos e operadores

O uso de um operador em uma expressão restringe a inferência de tipos nesse operador.Além disso, o uso de operadores impede a generalização automática, pois o uso de operadores implica um tipo de aritmético.Na ausência de qualquer outra informação, infere o compilador F# int como o tipo de expressões aritméticas.Você pode substituir esse comportamento, especificando um outro tipo.Assim, os tipos de argumento e o tipo de retorno de function1 no código a seguir são inferidos sejam int, mas os tipos de function2 são inferidos sejam float.

// x, y and return value inferred to be int
// function1: int -> int -> int
let function1 x y = x + y

// x, y and return value inferred to be float
// function2: float -> float -> float
let function2 (x: float) y = x + y

Consulte também

Referência

Símbolo e o referência de operador (F#)

Operador de sobrecarga (F#)

Operadores bit a bit (F#)

Operadores booleanos (F#)