Operadores aritméticos no Visual Basic
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 SHIFT 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 + (Visual Basic), ou subtrair um outro com o Operador - (Visual Basic), como demonstra o exemplo a seguir.
Dim x As Integer
x = 67 + 34
x = 32 - 12
Negação também usa o Operador - (Visual Basic), mas com apenas um operando, como o exemplo a seguir demonstra.
Dim x As Integer = 65
Dim y As Integer
y = -x
Multiplicação e divisão usam o Operador * (Visual Basic) e Operador / (Visual Basic), respectivamente, como demonstra o exemplo a seguir.
Dim y As Double
y = 45 * 55.23
y = 32 / 23
Exponenciação usa o Operador ^ (Visual Basic), como o exemplo a seguir demonstra.
Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).
Divisão de inteiros é chamada usando o Operador \ (Visual Basic). Divisão de inteiros retorna o quociente, ou seja, o número inteiro que representa o número de vezes o divisor pode dividir no dividendo sem consideração de qualquer restante. O divisor e 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 pela primeira vez. O exemplo a seguir demonstra divisão.
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
Módulo aritmético é realizado usando a Operador Mod (Visual Basic). Este operador retorna o resto após dividir o divisor no dividendo um número integral de vezes. Se tanto divisor dividendo são tipos integral, o valor retornado é integral. Se divisor e dividendo são tipos de ponto flutuante, o valor retornado também será de 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
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 gera uma exceção DivideByZeroException.
Em divisões de ponto flutuante que envolvem o tipo de dados Double , nenhuma exceção é acionada, e o resultado é o membro da classe que representa NaN,PositiveInfinity,ou NegativeInfinity, dependendo o dividendo. A tabela a seguir resume os resultados várias de tentar dividir um Double valor por zero.
Tipo de Dados do Dividendo |
Tipo de dados do Divisor |
Valor do dividendo |
Resultado |
Double |
Double |
0 |
NaN (não um número definido matematicamente) |
Double |
Double |
> 0 |
|
Double |
Double |
< 0 |
Quando você capturar uma exceção DivideByZeroException, você pode usar seus membros para ajudar a lidar com a mesma. Por exemplo, a propriedade Message contém o texto da mensagem para a exceção. Para obter mais informações, consulte Instrução Try...Catch...Finally (Visual Basic).
Operações bits SHIFT
Uma operação bit SHIFT (deslocamento de bits) executa um deslocamento aritmético em um padrão de bits. O padrão está contido no operando no lado esquerdo, enquanto o operando no lado direito especifica o número de posições para deslocar o padrão. Você pode deslocar o padrão para a direita com o Operador >> (Visual Basic) ou à esquerda com o Operador << (Visual Basic).
O tipo de dados do operando o padrão deve ser SByte,Byte,Short,UShort, Integer, UInteger, Long,ou ULong. O tipo de dados do operando o quantidade turno deve ser Integer ou deve ampliar a Integer.
Shifts aritméticos são não circulares, que significa que os bits deslocados de uma extremidade do resultado não são reintroduzidos na outra extremidade. As posições de bits disponíveis por um deslocamento são definidas da seguinte maneira:
0 para um shift (deslocamento) aritmético à esquerda
0 para um deslocamento aritmético para a direita de um número positivo
0 para um shift aritmético a direita de um tipo de dados não assinado (Byte, UShort, UInteger, ULong)
1 para um shift aritmético para a direita de um número negativo (SByte, Short, Integer, ou Long)
O exemplo a seguir desloca um valor Integer tanto para esquerda quanto para 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.
Deslocamentos aritméticos nunca geram exceções de overflow (estouro).
Operações Bitwise (bit a bit)
Além de serem operadores lógicos, Not,Or,And e Xor também executam aritmética bit a bit quando usado em valores numéricos. Para obter mais informações, consulte " Bitwise Operations " no Operadores lógicos e bit a bit no Visual Basic.
Segurança de tipo
Operandos normalmente devem ser do mesmo tipo. Por exemplo, se você estiver fazendo adição com uma variávelIntegerl, você deve adicioná-la a outra variável Integer, e você deve atribuir o resultado a uma variável do tipo Integer assim.
Uma maneira para garantir boa prática de codificação de tipo seguro é usar a Instrução Option Strict. Se você definir Option Strict On, Visual Basic executa automaticamente conversões fortemente tipadas. Por exemplo, se você tentar adicionar uma variável Integer para uma variável Double e atribuar o valor a uma variável Double, a operação continua normalmente, porque um valor Integer pode ser convertido em Double sem perda de dados. Conversões de tipo pouco seguros, por outro lado, causa um erro do compilador com Option Strict On. Por exemplo, se você tentar adicionar uma variável Integer em uma variável Doubleatribuir o valor a uma variável Integer, um erro do compilador resulta, porque uma variável Double não pode ser convertida implicitamente para tipo Integer.
Se você definir Option Strict Off,no entanto, Visual Basic permite conversões redutoras implícita, embora isso pode resultar em inesperado perda de dados ou precisão. Por esse motivo, é recomendável que você usar Option Strict On ao escrever código de produção. Para obter mais informações, consulte Conversões de Widening e Narrowing (Visual Basic).
Consulte também
Referência
Operadores aritméticos (Visual Basic)
Operadores Bit Shift (Visual Basic)
Conceitos
Operadores de comparação no Visual Basic
Operadores de concatenação no Visual Basic