Partilhar via


Operadores aritméticos no Visual Basic

Os operadores aritméticos são usados para executar muitas das operações aritméticas familiares que envolvem o cálculo de valores numéricos representados por literais, variáveis, outras expressões, chamadas de função e propriedade e constantes. Os operadores de deslocamento de bits são também classificados com operadores aritméticos, pois atuam ao nível dos bits individuais dos operandos e deslocam seus padrões de bits para a esquerda ou para a direita.

Operações aritméticas

Você pode adicionar dois valores em uma expressão junto com o operador + ou subtrair um do outro com o operador - (Visual Basic), como demonstra o exemplo a seguir.

Dim x As Integer
x = 67 + 34
x = 32 - 12

A negação também usa o operador - (Visual Basic), mas com apenas um operando, como demonstra o exemplo a seguir.

Dim x As Integer = 65
Dim y As Integer
y = -x

Multiplicação e divisão usam o * Operador e / Operador (Visual Basic), respectivamente, como o exemplo a seguir demonstra.

Dim y As Double
y = 45 * 55.23
y = 32 / 23

A exponenciação usa o operador ^, como demonstra o exemplo a seguir.

Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).

A divisão inteira é realizada usando o operador \ (Visual Basic). A divisão inteira retorna o quociente, ou seja, o inteiro que representa o número de vezes que o divisor pode dividir o dividendo sem considerar o resto. Tanto o divisor como o dividendo devem ser tipos integrais (SByte, Byte, Short, UShort, Integer, UIntegerLong, , e ULong) para este operador. Todos os outros tipos devem ser convertidos em um tipo integral primeiro. O exemplo a seguir demonstra a divisão inteira.

Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.

A aritmética do módulo é realizada usando o operador Mod. Este operador devolve o restante depois de dividir o divisor no dividendo um número integral de vezes. Se tanto o divisor quanto o dividendo forem tipos integrais, o valor retornado será integral. Se divisor e dividendo são tipos de ponto flutuante, o valor retornado também é ponto flutuante. O exemplo a seguir demonstra esse comportamento.

Dim x As Integer = 100
Dim y As Integer = 6
Dim z As Integer
z = x Mod y
' The preceding statement sets z to 4.
Dim a As Double = 100.3
Dim b As Double = 4.13
Dim c As Double
c = a Mod b
' The preceding statement sets c to 1.18.

Tentativa de divisão por zero

A divisão por zero tem resultados diferentes dependendo dos tipos de dados envolvidos. Em divisões integrais (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong), o .NET Framework lança uma exceção DivideByZeroException. Em operações de divisão no tipo de dados Decimal ou Single, o .NET Framework também lança uma exceção DivideByZeroException.

Em divisões de ponto flutuante envolvendo o Double tipo de dados, nenhuma exceção é lançada, e o resultado é o membro da classe que representa NaN, PositiveInfinityou NegativeInfinity, dependendo do dividendo. A tabela a seguir resume os vários resultados da tentativa de dividir um Double valor por zero.

Tipo de dados de dividendos Tipo de dados do divisor Valor dos dividendos Resultado
Double Double 0 NaN (não é um número matematicamente definido)
Double Double > 0 PositiveInfinity
Double Double < 0 NegativeInfinity

Quando você pega uma DivideByZeroException exceção, você pode usar seus membros para ajudá-lo a lidar com ela. Por exemplo, a Message propriedade mantém o texto da mensagem para a exceção. Para obter mais informações, consulte Tentar... Pegar... Finalmente Declaração.

Bit-Shift Operações

Uma operação de deslocamento de bits realiza um deslocamento aritmético num padrão de bits. O padrão está contido no operando à esquerda, enquanto o operando à direita especifica o número de posições para deslocar o padrão. Você pode deslocar o padrão para a direita com o >> Operador ou para a esquerda com o << Operador.

O tipo de dados do operando padrão deve ser SByte, Byte, Short, , UShort, IntegerUInteger, Long, ou ULong. O tipo de dados do operando da quantidade de deslocamento deve ser Integer ou deve alargar-se para Integer.

Os deslocamentos aritméticos não são circulares, o que significa que os bits deslocados de uma extremidade do resultado não são reintroduzidos na outra extremidade. As posições de bit libertadas por um deslocamento são configuradas da seguinte forma:

  • 0 para um deslocamento aritmético para a esquerda

  • 0 para um desvio aritmético para a direita de um número positivo

  • 0 para um deslocamento aritmético à direita de um tipo de dados não assinado (Byte, UShort, UInteger, ULong)

  • 1 para um desvio aritmético para a direita de um número negativo (SByte, Short, Integer, ou Long)

O exemplo a seguir desloca um Integer valor para a esquerda e para a direita.

Dim lResult, rResult As Integer
Dim pattern As Integer = 12
' The low-order bits of pattern are 0000 1100.
lResult = pattern << 3
' A left shift of 3 bits produces a value of 96.
rResult = pattern >> 2
' A right shift of 2 bits produces value of 3.

Mudanças aritméticas nunca geram exceções de estouro.

Operações Bitwise

Além de serem operadores lógicos, Not, Or, And, e Xor também executam aritmética bitwise quando usados em valores numéricos. Para obter mais informações, consulte "Operações Bitwise" em Operadores lógicos e bitwise no Visual Basic.

Segurança do tipo

Os operandos devem normalmente ser do mesmo tipo. Por exemplo, se você estiver fazendo adição com uma Integer variável, deverá adicioná-la a outra Integer variável e também deverá atribuir o resultado a uma variável do tipo Integer .

Uma maneira de garantir uma boa prática de codificação segura para tipos é usar a Declaração Estrita de Opção. Se você definir Option Strict On, o Visual Basic executará automaticamente conversões seguras para tipos . Por exemplo, se você tentar adicionar uma Integer variável a uma Double variável e atribuir o valor a uma Double variável, a operação prosseguirá normalmente, porque um Integer valor pode ser convertido em Double sem perda de dados. Conversões de tipo inseguras, por outro lado, causam um erro de compilador com Option Strict On. Por exemplo, se você tentar adicionar uma Integer variável a uma Double variável e atribuir o valor a uma Integer variável, um erro do compilador resultará, porque uma Double variável não pode ser implicitamente convertida em tipo Integer.

Se você definir Option Strict Off, no entanto, o Visual Basic permite que conversões de estreitamento implícitas ocorram, embora elas possam resultar na perda inesperada de dados ou precisão. Por esse motivo, recomendamos que você use Option Strict On ao escrever código de produção. Para obter mais informações, consulte Ampliando e restringindo conversões.

Ver também