Tipos de datos de resultados de operador (Visual Basic)
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 cualquier operando.
Intervalos de tipo de datos
Los intervalos de los tipos de datos pertinentes, en orden de menor a mayor, son los siguientes:
Booleano: dos valores posibles
Entero, UInteger: 4.294.967.296 (4,2...E+9) posibles valores enteros
Long, ULong: 18 446 744 073 709 551 615 (1.8...E+19) valores enteros posibles
Decimal: 1,5...E+29 valores enteros 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 Visual Basic datos, vea Tipos de datos.
Si un operando se evalúa como Nothing, Visual Basic operadores aritméticos lo tratan como cero.
Aritmética decimal
Tenga en cuenta que el tipo de datos Decimal no es de punto flotante ni entero.
Si alguno de los + – * / Mod Decimal Single Double operandos Decimal de una operación , , , o es y el otro no es o , Visual Basic amplía el otro operando a . Realiza la operación en y el tipo de Decimal datos de resultado es Decimal .
Floating-Point aritmética
Visual Basic realiza la mayoría 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 no es Double , 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, Singley Double. Visual Basic 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.
En la tabla siguiente se muestran los tipos de datos de resultado para el / operador . Tenga en cuenta que esta tabla es simétrica; Para una combinación determinada de tipos de datos de operando, el tipo de datos de resultado es el mismo independientemente del orden de los operandos.
Decimal |
Single |
Double |
Cualquier tipo entero | |
|---|---|---|---|---|
Decimal |
Decimal | Single | Double | Decimal |
Single |
Single | Single | Doble | Single |
Double |
Double | Double | Double | Double |
| Cualquier tipo entero | Decimal | Single | Double | Double |
El ^ operador solo se define para el tipo de Double datos. Visual Basic amplía cada operando según sea necesario para antes de la operación y el tipo de datos Double de resultado siempre es Double .
Aritmética de enteros
El tipo de datos de resultado de una operación de entero depende de los tipos de datos de los operandos. En general, Visual Basic 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 con signo con al menos un intervalo tan grande como cualquiera de los operandos.
De lo contrario, el resultado suele tener el mayor de los dos tipos de datos de operando.
Tenga en cuenta que es posible que el tipo de datos de resultado no sea el mismo que cualquiera de los tipos de datos de operando.
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. Puede OverflowException producirse una excepción si el valor es demasiado grande para el tipo de datos de resultado.
Operadores unarios + y –
En la tabla siguiente se muestran los tipos de datos de resultados de los dos operadores unaarios, + y – .
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Unarios + |
Short | SByte | Byte | Short | UShort | Entero | UInteger | long | ULong |
Unarios – |
Short | SByte | Short | Short | Entero | Entero | long | long | Decimal |
<< and >> operadores
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 antes de la operación y el tipo de datos Decimal Single de resultado es Double String Long Long . El operando derecho (el número de posiciones de bits que se va a desplazar) debe ser o un tipo que Integer se amplía 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 Mod y . Tenga en cuenta que esta tabla es simétrica; Para una combinación determinada de tipos de datos de operando, 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 resultado para el \ operador . Tenga en cuenta que esta tabla es simétrica; para una combinación determinada de tipos de datos de operando, 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 alguno de los operandos del operador es \ Decimal, Singleo 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 tipo <> de datos < > <= >= Boolean booleano. Lo mismo se aplica a las operaciones lógicas ( And , , , , , ) en AndAlso Not Or OrElse Xor 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 y solo se definen para , Visual Basic convierte cada operando según sea necesario a AndAlso antes de realizar la OrElse Boolean Boolean operación.
=, <>, , <, > <=, and > = Operadores
Si ambos operandos son Boolean , Visual Basic considera menor que True False . Si se compara un tipo numérico con un , Visual Basic intenta convertir a String String antes de la Double operación. Un Char operando o solo se puede comparar con otro operando del mismo tipo de Date datos. El tipo de datos de resultado es siempre Boolean .
Operador Not bit a bit
En la tabla siguiente se muestran los tipos de datos de resultado para el operador bit a Not bit.
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 antes de la operación y el tipo de datos Decimal Single de resultado es Double String Long Long .
Operadores And, Or y Xor bit a bit
En la tabla siguiente se muestran los tipos de datos de resultados de los operadores bit a bit And Or , y Xor . Tenga en cuenta que esta tabla es simétrica; Para una combinación determinada de tipos de datos de operando, 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 en antes de la operación y el tipo de datos de resultado es el mismo que si ese operando ya hubiera Decimal Single sido Double String Long Long .
Operadores varios
El & operador solo se define para la concatenación de String operandos. Visual Basic convierte cada operando según sea necesario en antes de la operación y el tipo de datos String de resultado es siempre String . Para los fines del operador , se considera que todas las conversiones a se & String amplían, incluso si Option Strict es On .
Los Is operadores y requieren que ambos IsNot operandos sean de un tipo de referencia. La expresión ... requiere que el primer operando sea de un tipo de referencia y el segundo operando sea TypeOf el nombre de un tipo de Is 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 a String antes de la operación. El tipo de datos de resultado es siempre Boolean .