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. Também classificados com operadores aritméticos são os operadores de deslocamento de bits, que atuam no nível dos bits individuais dos operandos e deslocam seus padrões de bits para a esquerda ou 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 no dividendo sem considerar qualquer resto. Tanto o divisor como o dividendo devem ser tipos integrais (SByte, Byte, Short, UShort, Integer, LongUInteger, , 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, , UShortShort, , UIntegerInteger, Long, ), ULongo .NET Framework lança uma DivideByZeroException exceção. Em operações de DecimalSingle divisão no ou tipo de dados, o .NET Framework também lança uma DivideByZeroException exceção.

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 Result
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.

Operações Bit-Shift

Uma operação de deslocamento de bits executa um deslocamento aritmético em um 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 de quantidade de deslocamento deve ser ou deve ser Integer ampliado 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 desocupadas por um turno são definidas da seguinte forma:

  • 0 para um desvio aritmético para a esquerda

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

  • 0 para um desvio aritmético para a 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 não seguras de tipo, 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.

Consulte também