Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 turno de bit, que atuam no nível dos bits individuais dos operandos e deslocam seus padrões de bit 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 de 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 demonstra o exemplo a seguir.
Dim y As Double
y = 45 * 55.23
y = 32 / 23
A exponencializaçã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 de inteiros é realizada usando o operador \ (Visual Basic). A divisão inteiro retorna o quociente, ou seja, o inteiro que representa o número de vezes que o divisor pode dividir no dividendo sem considerar nenhum restante. Tanto o divisor quanto o dividendo devem ser tipos integrais (SByte
, , Byte
, Short
, UShort
, Integer
, , UInteger
, Long
e ULong
) para esse operador. Todos os outros tipos devem ser convertidos em um tipo integral primeiro. O exemplo a seguir demonstra a divisão de inteiros.
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
A aritmética modulus é executada usando o Operador Mod. Esse operador retorna o restante depois de dividir o divisor no dividendo um número integral de vezes. Se divisor e dividendo forem tipos integrais, o valor retornado será integral. Se divisor e dividendo forem tipos de ponto flutuante, o valor retornado também será 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 gera 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 é gerada 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 divisor | Valor de dividendo | Resultado |
---|---|---|---|
Double |
Double |
0 | NaN (não é um número matematicamente definido) |
Double |
Double |
> 0 | PositiveInfinity |
Double |
Double |
< 0 | NegativeInfinity |
Ao capturar uma DivideByZeroException exceção, você pode usar seus membros para ajudá-lo a lidar com ela. Por exemplo, a Message propriedade contém o texto da mensagem para a exceção. Para obter mais informações, consulte Instrução Try...Catch...Finally.
Operações de Bit-Shift
Uma operação de deslocamento de bits executa uma mudança aritmética 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
, Integer
, , UInteger
, Long
ou ULong
. O tipo de dados do operando de quantidade de deslocamento deve ser ou deve ser Integer
ampliado para Integer
.
As mudanças aritméticas 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 maneira:
0 para um turno aritmético à esquerda
0 para uma mudança aritmética para a direita de um número positivo
0 para um deslocamento aritmético à direita de um tipo de dado sem sinal (
Byte
,UShort
,UInteger
,ULong
)1 para uma mudança aritmética para a direita de um número negativo (
SByte
, ,Short
Integer
ouLong
)
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.
As mudanças aritméticas nunca geram exceções de estouro.
Operações bit a bit
Além de serem operadores lógicos, Not
Or
And
e Xor
também executarem aritmética bit a bit quando usados em valores numéricos. Para obter mais informações, consulte "Operações bit a bit" em operadores lógicos e bit a bit no Visual Basic.
Segurança de tipos
Os operandos normalmente devem 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 atribuir o resultado a uma variável de tipo Integer
também.
Uma maneira de garantir uma boa prática de codificação segura de tipo é usar a Option Strict Statement. Se você definir Option Strict On
, o Visual Basic executará automaticamente conversões com segurança de tipo . 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 continuará normalmente, pois um Integer
valor pode ser convertido Double
sem perda de dados. As conversões de tipo não seguras, por outro lado, causam um erro de compilação 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á, pois uma Double
variável não pode ser convertida implicitamente em tipo Integer
.
Se você definir Option Strict Off
, no entanto, o Visual Basic permitirá que conversões de restrição 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.