Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Visual Basic determina el tipo de datos de resultado de una operación en función de los tipos de datos de los operandos. En algunos casos, podría ser un tipo de datos con un intervalo mayor que el de cualquiera de los operandos.
Intervalos de tipos de datos
Los intervalos de los tipos de datos pertinentes, en orden de menor a mayor, son los siguientes:
Boolean : dos valores posibles
Entero, UInteger : 4.294.967.296 (4.2...E+9) valores enteros posibles
Long, ULong : 18,446,744,073,709,551,615 (1,8...E+19) valores enteros posibles
Decimal : 1,5...E+29 posibles valores enteros, intervalo máximo 7,9...E+28 (valor absoluto)
Único : 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 Tipos de datos.
Si un operando se evalúa como Nothing, los operadores aritméticos de Visual Basic lo tratan como cero.
Aritmética decimal
Tenga en cuenta que el tipo de datos Decimal no es de punto flotante ni entero.
Si cualquiera de los operandos de una +operación , , *–, /o Mod es Decimal y el otro no Single es o Double, Visual Basic amplía el otro operando a Decimal. Realiza la operación en Decimaly el tipo de datos de resultado es Decimal.
Floating-Point aritmética
Visual Basic realiza la mayoría de la aritmética 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 no Doublees , Visual Basic realiza la operación en Single. Amplía cada operando según sea necesario para el tipo de datos adecuado antes de la operación y el resultado tiene ese tipo de datos.
Operadores / y ^
El / operador solo se define para los tipos de datos Decimal, Single y Double . Visual Basic amplía cada operando según sea necesario para el tipo de datos adecuado antes de la operación y el resultado tiene ese tipo de datos.
En la tabla siguiente se muestran los tipos de datos de resultados para el / operador . Tenga en cuenta que esta tabla es simétrica; para una combinación determinada de tipos de datos operandos, el tipo de datos de resultado es el mismo independientemente del orden de los operandos.
Decimal |
Single |
Double |
Cualquier tipo entero | |
|---|---|---|---|---|
Decimal |
Decimal | Soltero | Double | Decimal |
Single |
Soltero | Soltero | Double | Soltero |
Double |
Double | Double | Double | Double |
| Cualquier tipo entero | Decimal | Soltero | Double | Double |
El ^ operador solo se define para el tipo de Double datos. Visual Basic amplía cada operando según sea necesario para Double antes de la operación y el tipo de datos de resultado siempre Doublees .
Aritmética de enteros
El tipo de datos de resultado de una operación entera depende de los tipos de datos de los operandos. En general, Visual Basic usa las siguientes directivas para determinar el tipo de datos de 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 se fuerza aShort.Si un operando sin signo participa con un operando firmado, el resultado tiene un tipo firmado con al menos un intervalo tan grande como cualquiera de los operandos.
De lo contrario, el resultado suele tener el mayor tamaño de los dos tipos de datos operandos.
Tenga en cuenta que el tipo de datos de resultado podría no ser el mismo que ninguno de los tipos de datos operandos.
Nota:
El tipo de datos de resultado no siempre es lo suficientemente grande como para contener todos los valores posibles resultantes de la operación. Se puede producir una OverflowException excepción si el valor es demasiado grande para el tipo de datos de resultado.
Unario + y : operadores
En la tabla siguiente se muestran los tipos de datos de resultado para los dos operadores unarios y +–.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Unario + |
Short | SByte | byte | Short | UShort | Entero | UInteger | long | ULong |
Unario – |
Short | SByte | Short | Short | Entero | Entero | long | long | Decimal |
<<operadores y >>
En la tabla siguiente se muestran los tipos de datos de resultado para los dos operadores de desplazamiento de bits y <<>>. Visual Basic trata cada operador de desplazamiento de bits como un operador unario en su operando izquierdo (el patrón de bits que se va a desplazar).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
<<, >> |
Short | SByte | byte | Short | UShort | Entero | UInteger | long | ULong |
Si el operando izquierdo es , , o , Visual Basic intenta convertirlo a Long antes de la operación y el tipo de datos de resultado es Long.StringDoubleSingleDecimal El operando derecho (el número de posiciones de bits que se va a desplazar) debe ser Integer o un tipo que se amplíe a Integer.
Operadores Binarios +, –, *y Mod
En la tabla siguiente se muestran los tipos de datos de resultados para los operadores binarios + y – y los * operadores y Mod . Tenga en cuenta que esta tabla es simétrica; para una combinación determinada de tipos de datos operandos, el tipo de datos de resultado es el mismo independientemente del orden de los operandos.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
Short | SByte | Short | Short | Entero | Entero | long | long | Decimal |
SByte |
SByte | SByte | Short | Short | Entero | Entero | long | long | Decimal |
Byte |
Short | Short | byte | Short | UShort | Entero | UInteger | long | ULong |
Short |
Short | Short | Short | Short | Entero | Entero | long | long | Decimal |
UShort |
Entero | Entero | UShort | Entero | UShort | Entero | UInteger | long | ULong |
Integer |
Entero | Entero | Entero | Entero | Entero | Entero | 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 de resultados para el \ operador . Tenga en cuenta que esta tabla es simétrica; para una combinación determinada de tipos de datos operandos, el tipo de datos de resultado es el mismo independientemente del orden de los operandos.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
Short | SByte | Short | Short | Entero | Entero | long | long | long |
SByte |
SByte | SByte | Short | Short | Entero | Entero | long | long | long |
Byte |
Short | Short | byte | Short | UShort | Entero | UInteger | long | ULong |
Short |
Short | Short | Short | Short | Entero | Entero | long | long | long |
UShort |
Entero | Entero | UShort | Entero | UShort | Entero | UInteger | long | ULong |
Integer |
Entero | Entero | Entero | Entero | Entero | Entero | 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 cualquiera de los operandos del \ operador es Decimal, Single o Double, Visual Basic intenta convertirlo en Long antes de la operación y el tipo de datos de resultado es Long.
Comparaciones relacionales y bit a bit
El tipo de datos de resultado de una operación relacional (=, <>, <, >, <=, >=) es siempre Boolean tipo de datos booleano. Lo mismo sucede con las operaciones lógicas (And, AndAlso, OrNot, , OrElse, Xor) en Boolean operandos.
El tipo de datos de resultado 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 solo se definen para Booleany Visual Basic convierte cada operando según sea necesario para Boolean antes de realizar la operación.
=, , <<>, , <>=y >= Operadores
Si ambos operandos son Boolean, Visual Basic considera True que es menor que False. Si se compara un tipo numérico con , StringVisual Basic intenta convertir a StringDouble antes de la operación. Un Char operando o Date solo se puede comparar con otro operando del mismo tipo de datos. El tipo de datos de resultado siempre Booleanes .
Operador Not bit a bit
En la tabla siguiente se muestran los tipos de datos de resultados para el operador bit a bit Not .
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Not |
Boolean | SByte | byte | Short | UShort | Entero | UInteger | long | ULong |
Si el operando es , , o , Visual Basic intenta convertirlo a Long antes de la operación y el tipo de datos de resultado es Long.StringDoubleSingleDecimal
Operadores bit a bit y, or y Xor
En la tabla siguiente se muestran los tipos de datos de resultados para los operadores bit a bit And, Ory Xor . Tenga en cuenta que esta tabla es simétrica; para una combinación determinada de tipos de datos operandos, el tipo de datos de resultado es el mismo independientemente del orden de los operandos.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
Boolean | SByte | Short | Short | Entero | Entero | long | long | long |
SByte |
SByte | SByte | Short | Short | Entero | Entero | long | long | long |
Byte |
Short | Short | byte | Short | UShort | Entero | UInteger | long | ULong |
Short |
Short | Short | Short | Short | Entero | Entero | long | long | long |
UShort |
Entero | Entero | UShort | Entero | UShort | Entero | UInteger | long | ULong |
Integer |
Entero | Entero | Entero | Entero | Entero | Entero | 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 , , o , Visual Basic intenta convertirlo a Long antes de la operación y el tipo de datos de resultado es el mismo que si ese operando ya hubiera sido Long.StringDoubleSingleDecimal
Operadores varios
El & operador solo se define para la concatenación de String operandos. Visual Basic convierte cada operando según sea necesario para String antes de la operación y el tipo de datos de resultado siempre Stringes . Para los fines del & operador, todas las conversiones a String se consideran de ampliación, incluso si Option Strict es On.
Los Is operadores y IsNot requieren que ambos operandos sean de un tipo de referencia. La TypeOfexpresión ...Is requiere que el primer operando sea de un tipo de referencia y el segundo operando sea el nombre de un tipo de datos. En todos estos casos, el tipo de datos de resultado es Boolean.
El Like operador solo se define para la coincidencia de patrones de String operandos. Visual Basic intenta convertir cada operando según sea necesario para String antes de la operación. El tipo de datos de resultado siempre Booleanes .