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
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)