Operadores aritméticos en Visual Basic

Actualización: noviembre 2007

Los operadores aritméticos se utilizan para realizar muchas de las operaciones aritméticas habituales que implican el cálculo de valores numéricos representados por literales, variables, otras expresiones, llamadas a funciones y propiedades, y constantes. También se clasifican como operadores aritméticos los operadores de desplazamiento de bits, que actúan al nivel de bits individuales de los operandos y cambian sus modelos de bits a la izquierda o la derecha.

Operaciones aritméticas

Puede sumar dos valores en una expresión con el + (Operador, Visual Basic) o restar un valor de otro con el - (Operador, Visual Basic), como se muestra en el siguiente ejemplo.

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

La negación también utiliza el - (Operador, Visual Basic), pero con un solo operando, como se puede ver en el ejemplo siguiente.

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

La multiplicación y la división utilizan los * (Operador, Visual Basic) y / (Operador, Visual Basic), respectivamente, como se muestra en el ejemplo siguiente.

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

La exponenciación utiliza el ^ (Operador, Visual Basic), como se puede ver en el ejemplo siguiente.

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

La división de enteros se lleva a cabo con el \ (Operador, Visual Basic). La división de enteros devuelve el cociente, es decir, el número entero que representa el número de veces que puede se puede dividir dividendo entre el divisor sin tener en cuenta el valor del resto. El divisor y el dividendo deben ser tipos integrales (SByte, Byte, Short, UShort, Integer, UInteger, Long y ULong) para este operador. Todos los demás tipos deben convertirse antes a tipo integral. El ejemplo siguiente ilustra la división de enteros.

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

El módulo aritmético se calcula con el Mod (Operador, Visual Basic). Este operador devuelve el resto después de dividir el divisor por el dividendo un número integral de veces. Si tanto el divisor como el dividendo son tipos integrales, el valor devuelto es integral. Si el divisor y el dividendo son tipos de punto flotante, el valor devuelto es una variable de punto flotante. En el siguiente ejemplo se muestra este comportamiento.

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.

Intento de dividir por cero

La división por cero produce resultados diferentes dependiendo de los tipos de datos que se utilicen. En divisiones de enteros (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong), .NET Framework produce una excepción DivideByZeroException. En operaciones de división en tipos de datos Decimal o Single, .NET Framework también produce una excepción DivideByZeroException.

En las divisiones de punto flotante que impliquen el tipo de datos Double, no se produce ninguna excepción y el resultado es el miembro de clase que representa NaN, PositiveInfinity o NegativeInfinity, dependiendo del dividendo. La siguiente tabla resume los diferentes resultados de intentar dividir un valor Double por cero.

Tipo de datos del dividendo

Tipo de datos del divisor

Valor del dividendo

Resultado

Double

Double

0

NaN (no es un número definido matemáticamente)

Double

Double

> 0

PositiveInfinity

Double

Double

< 0

NegativeInfinity

Cuando se detecta una excepción DivideByZeroException, puede utilizar los miembros de la excepción para controlarla. Por ejemplo, la propiedad Message contiene el texto del mensaje de la excepción. Para obtener más información, vea Información general sobre el control estructurado de excepciones de Visual Basic.

Operaciones de desplazamiento de bits

Una operación de desplazamiento de bits realiza un desplazamiento aritmético sobre un modelo de bits. El patrón está contenido en el operando de la izquierda, mientras que el operando de la derecha especifica el número de posiciones que debe desplazarse el modelo. Puede desplazar el modelo a la derecha con >> (Operador, Visual Basic) o a la izquierda con << (Operador, Visual Basic).

El tipo de datos del operando del modelo debe ser SByte, Byte, Short, UShort, Integer, UInteger, Long o ULong. El tipo de datos del operando de cantidad de desplazamiento debe ser Integer o se debe ampliar a Integer.

Los desplazamientos aritméticos no son circulares, lo que significa que los bits desplazados a un extremo del resultado no se vuelven a introducir en el otro extremo. Las posiciones de bits que quedan vacantes debido a un desplazamiento se establecen de la siguiente manera:

  • 0 para un desplazamiento aritmético a la izquierda

  • 0 para un desplazamiento aritmético a la derecha de un número positivo

  • 0 para un desplazamiento aritmético a la derecha de un tipo de datos sin signo (Byte, UShort, UInteger, ULong)

  • 1 para un desplazamiento aritmético a la derecha de un número negativo (SByte, Short, Integer o Long)

El ejemplo siguiente desplaza un valor Integer tanto a la izquierda como a la derecha.

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.

Los desplazamientos aritméticos nunca generan excepciones de desbordamiento.

Operaciones bit a bit

Además de ser operadores lógicos, Not, Or, And y Xor también realizan operaciones aritméticas bit a bit cuando se utilizan en valores numéricos. Para obtener más información, vea "Operaciones bit a bit" en Operadores lógicos y bit a bit en Visual Basic.

Seguridad de tipos

Normalmente, los operandos deben ser del mismo tipo. Por ejemplo, si está realizando sumas con una variable Integer, debe sumarla a otra variable Integer y asignar el resultado a una variable que también sea del tipo Integer.

Una manera de asegurar unas buenas prácticas de codificación con seguridad de tipos consiste en usar la Option Strict (Instrucción). Si establece Option Strict On, Visual Basic realiza automáticamente las conversiones con seguridad de tipos. Por ejemplo, si intenta agregar una variable Integer a una variable Double y asignar el valor a una variable de tipo Double, la operación se realizará normalmente, porque un valor Integer puede convertirse a Double sin pérdida de datos. Por otra parte, las conversiones no seguras de tipos, causan un error del compilador con Option Strict On. Por ejemplo, si intenta agregar una variable Integer a una variable Double y asignar el valor a la variable Integer, se produce un error del compilador, porque una variable Double no se puede convertir implícitamente al tipo Integer.

Sin embargo, si establece Option Strict Off, Visual Basic permite que se efectúen conversiones implícitas de restricción, aunque pueden dar como resultado la pérdida inesperada de datos o de precisión. Por esta razón, es recomendable utilizar Option Strict On al escribir el código de producción. Para obtener más información, vea Conversiones de ampliación y de restricción.

Vea también

Conceptos

Operadores de comparación en Visual Basic

Operadores de concatenación en Visual Basic

Operadores lógicos y bit a bit en Visual Basic

Combinación eficaz de operadores

Referencia

Operadores aritméticos (Visual Basic)

Operadores de desplazamiento