Compartir a través de


Tipos de datos de resultados de operador

Actualización: noviembre 2007

Visual Basic determina el tipo de datos del resultado de una operación en función de los tipos de datos de los operandos. En algunos casos, el tipo de datos del resultado podría tener un intervalo mayor que el de los operandos.

Intervalos de tipos de datos

Los intervalos de los tipos de datos pertinentes, ordenados de menor a mayor, son los siguientes:

  • Boolean — dos valores posibles

  • SByte, Byte — 256 valores enteros posibles

  • Short, UShort — 65,536 (6.5...E+4) valores integrales posibles

  • Integer, UInteger — 4,294,967,296 (4.2...E+9) valores integrales posibles

  • Long, ULong — 18,446,744,073,709,551,615 (1.8...E+19) valores integrales posibles

  • Decimal — 1.5...E+29 valores integrales posibles, intervalo máximo 7.9...E+28 (valor absoluto)

  • Single — intervalo máximo 3.4...E+38 (valor absoluto)

  • Double — intervalo máximo 1.7...E+308 (valor absoluto)

Para obtener más información sobre los tipos de datos de Visual Basic, vea Resumen de tipos de datos (Visual Basic).

Si un operando se evalúa como Nothing, los operadores aritméticos de Visual Basic lo tratan como si fuera cero.

Aritmética decimal

Tenga en cuenta que el tipo de datos Decimal no es un tipo de datos de punto flotante ni un tipo de datos entero.

Si alguno de los operandos de una operación +, –, *, / o Mod es Decimal y el otro es distinto de Single o Double, Visual Basic amplía el otro operando a Decimal. El programa realiza la operación en Decimal y el tipo de datos resultante es Decimal.

Aritmética de punto flotante

Visual Basic realiza la mayor parte de las operaciones aritméticas de punto flotante en Double, que es el tipo de datos más eficaz para estas operaciones. Sin embargo, si un operando es Single y el otro es distinto de Double, Visual Basic realiza la operación en Single. El programa amplía cada operando según sea necesario al tipo de datos adecuado antes de la operación, y el resultado tiene ese tipo de datos.

/ y ^ (Operadores)

El operador / sólo se define en los tipos de datos Decimal, Single y Double. Visual Basic amplía cada operando según sea necesario al tipo de datos apropiado antes de realizar la operación, y el resultado tiene ese tipo de datos.

En la tabla siguiente se muestran los tipos de datos resultantes para el operador /. Observe que esta tabla es simétrica; para una combinación dada de tipos de datos de los operandos, el tipo de datos del resultado será el mismo independientemente del orden de los operandos.

Decimal

Single

Double

Cualquier tipo de entero

Decimal

Decimal

Single

Double

Double

Single

Single

Single

Double

Double

Double

Double

Double

Double

Double

Cualquier tipo de entero

Double

Double

Double

Double

El operador ^ sólo se define en el tipo de datos Double. Visual Basic amplía cada operando según sea necesario a Double antes de la operación, y el tipo de datos resultante es siempre Double.

Aritmética de enteros

El tipo de datos resultante de una operación de enteros depende de los tipos de datos de los operandos. Por lo general, Visual Basic utiliza las directivas siguientes para determinar el tipo de datos del resultado:

  • Si ambos operandos de un operador binario tienen el mismo tipo de datos, el resultado tiene ese tipo de datos. Una excepción es Boolean, que forzosamente es Short.

  • Si un operando sin signo trabaja con un operando con signo, el resultado tiene un tipo con signo que como mínimo tiene un intervalo tan grande como el de cualquiera de los dos operandos.

  • De lo contrario, el resultado normalmente tiene el tipo de datos más grande de los dos operandos.

Tenga en cuenta que el tipo de datos del resultado puede diferir del tipo de datos de los operandos.

Nota:

El tipo de datos del resultado no siempre es lo suficientemente grande como para contener todos los valores posibles que resultan de la operación. Puede iniciarse una excepción OverflowException si el valor es demasiado grande para el tipo de datos del resultado.

+ y – (Operadores unarios)

En la tabla siguiente se muestran los tipos de datos resultantes para los dos operadores unarios + y –.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

+ unario

Short

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

– unario

Short

SByte

Short

Short

Integer

Integer

Long

Long

Decimal

<< y >> (Operadores)

En la tabla siguiente se muestran los tipos de datos resultantes para los dos operadores de desplazamiento de bits << y >>. Visual Basic trata cada operador de desplazamiento de bits como un operador unario de su operando izquierdo (el modelo de bits que se va a desplazar).

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

<<, >>

Short

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Si el operando izquierdo es Decimal, Single, Double o String, Visual Basic intenta convertirlo en Long antes de la operación, y el tipo de datos del resultado es Long. El operando derecho (el número de posiciones en bits que se va a desplazar) debe ser Integer o un tipo que se amplíe a Integer.

+, –, * y Mod (Operadores binarios)

En la tabla siguiente se muestran los tipos de datos resultantes para los operadores + y – binarios y los operadores * y Mod. Observe que esta tabla es simétrica; para una combinación dada de tipos de datos de los operandos, el tipo de datos del resultado será el mismo independientemente del orden de los operandos.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Boolean

Short

SByte

Short

Short

Integer

Integer

Long

Long

Decimal

SByte

SByte

SByte

Short

Short

Integer

Integer

Long

Long

Decimal

Byte

Short

Short

Byte

Short

UShort

Integer

UInteger

Long

ULong

Short

Short

Short

Short

Short

Integer

Integer

Long

Long

Decimal

UShort

Integer

Integer

UShort

Integer

UShort

Integer

UInteger

Long

ULong

Integer

Integer

Integer

Integer

Integer

Integer

Integer

Long

Long

Decimal

UInteger

Long

Long

UInteger

Long

UInteger

Long

UInteger

Long

ULong

Long

Long

Long

Long

Long

Long

Long

Long

Long

Decimal

ULong

Decimal

Decimal

ULong

Decimal

ULong

Decimal

ULong

Decimal

ULong

\ (Operador)

En la tabla siguiente se muestran los tipos de datos resultantes para el operador \. Observe que esta tabla es simétrica; para una combinación dada de tipos de datos de los operandos, el tipo de datos del resultado será el mismo independientemente del orden de los operandos.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Boolean

Short

SByte

Short

Short

Integer

Integer

Long

Long

Long

SByte

SByte

SByte

Short

Short

Integer

Integer

Long

Long

Long

Byte

Short

Short

Byte

Short

UShort

Integer

UInteger

Long

ULong

Short

Short

Short

Short

Short

Integer

Integer

Long

Long

Long

UShort

Integer

Integer

UShort

Integer

UShort

Integer

UInteger

Long

ULong

Integer

Integer

Integer

Integer

Integer

Integer

Integer

Long

Long

Long

UInteger

Long

Long

UInteger

Long

UInteger

Long

UInteger

Long

ULong

Long

Long

Long

Long

Long

Long

Long

Long

Long

Long

ULong

Long

Long

ULong

Long

ULong

Long

ULong

Long

ULong

Si alguno de los operandos del operador \ es Decimal, Single o Double, Visual Basic intenta convertirlo a Long antes de la operación, y el tipo de datos del resultado es Long.

Comparaciones relacionales y bit a bit

El tipo de datos resultante de una operación relacional (=, <>, <, >, <=, >=) siempre es BooleanBoolean (Tipo de datos, Visual Basic). Esto se aplica también a las operaciones lógicas (And, AndAlso, Not, Or, OrElse, Xor) de operandos Boolean.

El tipo de datos resultante de una operación lógica bit a bit depende de los tipos de datos de los operandos. Tenga en cuenta que AndAlso y OrElse sólo se definen para Boolean, y Visual Basic convierte cada operando según sea necesario en Boolean antes de realizar la operación.

=, <>, <, >, <= y >= (Operadores)

Si ambos operandos son Boolean, Visual Basic considera que True es menor que False. Si un tipo numérico se compara con un tipo String, Visual Basic intenta convertir el tipo String a Double antes de la operación. Un operando Char o Date sólo se puede comparar con otro operando del mismo tipo de datos. El tipo de datos resultante siempre es Boolean.

Not (Operador bit a bit)

En la tabla siguiente se muestran los tipos de datos resultantes para el operador Not bit a bit.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Not

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Si el operando es Decimal, Single, Double o String, Visual Basic intenta convertirlo a Long antes de la operación, y el tipo de datos resultante es Long.

And, Or y Xor (Operadores bit a bit)

En la tabla siguiente se muestran los tipos de datos resultantes para los operadores And, Or y Xor bit a bit. Observe que esta tabla es simétrica; para una combinación dada de tipos de datos de los operandos, el tipo de datos del resultado será el mismo independientemente del orden de los operandos.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Boolean

Boolean

SByte

Short

Short

Integer

Integer

Long

Long

Long

SByte

SByte

SByte

Short

Short

Integer

Integer

Long

Long

Long

Byte

Short

Short

Byte

Short

UShort

Integer

UInteger

Long

ULong

Short

Short

Short

Short

Short

Integer

Integer

Long

Long

Long

UShort

Integer

Integer

UShort

Integer

UShort

Integer

UInteger

Long

ULong

Integer

Integer

Integer

Integer

Integer

Integer

Integer

Long

Long

Long

UInteger

Long

Long

UInteger

Long

UInteger

Long

UInteger

Long

ULong

Long

Long

Long

Long

Long

Long

Long

Long

Long

Long

ULong

Long

Long

ULong

Long

ULong

Long

ULong

Long

ULong

Si un operando es Decimal, Single, Double o String, Visual Basic intenta convertirlo a Long antes de la operación, y el tipo de datos resultante es el mismo que el del operando que ya había sido Long.

Operadores varios

El operando & sólo se define para la concatenación de operandos String. Visual Basic convierte cada operando según sea necesario a String antes de la operación, y el tipo de datos del resultado siempre es String. Para los propósitos del operador &, se considera que todas las conversiones a String se están ampliando, aun cuando Option Strict es On.

Los operadores Is y IsNot requieren que ambos operandos pertenezcan a un tipo de referencia. La expresión TypeOf...Is requiere que el primer operando pertenezca a un tipo de referencia y el segundo operando sea el nombre de un tipo de datos. En todos estos casos, el tipo de datos resultante es Boolean.

El operador Like sólo se define para la coincidencia de modelos de los operandos String. Visual Basic intenta convertir cada operando según sea necesario a String antes de la operación. El tipo de datos resultante siempre es Boolean.

Vea también

Conceptos

Operadores y expresiones en Visual Basic

Operadores aritméticos en Visual Basic

Operadores de comparación en Visual Basic

Referencia

Resumen de tipos de datos (Visual Basic)

Prioridad de operador en Visual Basic

Operadores enumerados por funcionalidad

Operadores aritméticos (Visual Basic)

Operadores de comparación (Visual Basic)

Option Strict (Instrucción)

Otros recursos

Operadores (Visual Basic)