Tipos de dados de resultados de operador (Visual Basic)
Visual Basic determina o tipo de dado do resultado de uma operação baseada nos tipos de dado dos operandos.Em alguns casos, ele deve ser de um tipo de dado com um intervalo maior do que o dos operandos.
Intervalos de Tipo de Dado
Os intervalos de tipos de dado relevantes, em ordem do menor para o menor, são os seguintes:
Boolean - dois valores possíveis
Short,UShort - 65,536 (6.5...E+4) valores integrais possíveis
Integer,UInteger - 4,294,967,296 (4.2...E+9) valores integrais possíveis
Long,ULong - 18,446,744,073,709,551,615 (1.8...E+19) valores integrais possíveis
Decimal - 1.5...E+29 valores integrais possíveis, intervalo máximo de 7.9...E+28 (valor absoluto)
Single - máximo intervalo 3.4...E+38 (valor absoluto)
Double - máximo intervalo 1.7...E+308 (valor absoluto)
Para obter mais informações, sobre tipos de dado Visual Basic, consulte Resumo do tipo de dados (Visual Basic).
Se um operando obtém Nothing, os operadores aritméticos Visual Basic tratam como zero.
Aritmética Decimal
Observe que o tipo de dado Decimal não é de ponto flutuante nem inteiro.
If either operand of a +, –, *, /, or Mod operation is Decimal and the other is not Single or Double, Visual Basic widens the other operand to Decimal.Ele realiza a operação em Decimal, e o tipo de dado do resultado será Decimal.
Aritmética de Ponto-Flutuante
Visual Basic realiza a maioria da aritmética de ponto flutuante em Double, que é o tipo de dado mais eficiente para tais operações.Entretanto, se um operando for Single e o outro não for Double, Visual Basic realiza a operação em Single.Isso amplia cada operando conforme seja necessário para o tipo de dado apropriado antes da operação, e o resultado tem esse tipo de dado.
Operadores / e ^
O / operador está definido apenas para o Decimal, único, e Double tipos de dados.Visual Basicamplia a cada operando conforme necessário para o tipo de dados apropriado antes que a operação e o resultado tenha esse tipo de dados.
A tabela seguinte mostra tipos de dado de resultado para o operador /.Observe que essa tabela é simétrica; para uma dada combinação de tipos de dado de operandos, o tipo de dado do resultado é o mesmo, independemente da ordem dos operandos.
Decimal |
Single |
Double |
Qualquer tipo inteiro |
|
Decimal |
Decimal |
Simples |
Double |
Decimal |
Single |
Simples |
Simples |
Double |
Simples |
Double |
Double |
Double |
Double |
Double |
Qualquer tipo inteiro |
Decimal |
Simples |
Double |
Double |
O ^ o operador está definido somente para o Double tipo de dados.Visual Basicamplia a cada operando conforme necessário para Double antes da operação e o resultado é do tipo de dados sempre Double.
Aritmética de Inteiros
O tipo de dados do resultado de uma operação com inteiro depende do tipo de dado dos operandos.Em geral, Visual Basic usa as seguintes políticas para determinar o tipo de dado do resultado:
Se ambos os operandos de um operador binário têm o mesmo tipo de dado, o resultado terá esse tipo de dado.Uma exceção é Boolean, que é forçado a Short.
Se um operador sem-sinal participar em uma operação com sinal, o resultado será com sinal e com pelo menos o tamanho do intervalo de cada um dos operandos.
Por outro lado, o resultado geralmente toma do maior dos tipos de dado dos operandos.
Observe que o tipo de dado do resultado pode não ser o mesmo de ambos os tipos de dado dos operandos.
Observação |
---|
O tipo de dado do resultado não é sempre grande o suficiente para armazenar todos os valores possíveis resultantes da operação.Uma exceção OverflowException pode ocorrer se o valor for muito grande para o tipo de dado do resultado. |
Operadores unários + e - .
A tabela a seguir mostra o resultado tipos de dados para os dois operadores unários, + e –.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Unário + |
Short |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Unário – |
Short |
SByte |
Short |
Short |
Integer |
Integer |
Long |
Long |
Decimal |
Operadores << e >>
A tabela a seguir mostra o resultado tipos de dados para os dois operadores bit shift, << e >>.Visual Basictrata cada operador de deslocamento de bits como um operador unário em seu operando esquerdo (o padrão de bits deslocamento).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
<<, >> |
Short |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Se o operador esquerdo for Decimal,Single,Double, ou String, Visual Basic tenta convertê-lo para Long antes da operação, e o tipo de dado do resultado será Long.O operador direito (o número de posições de bit a deslocar) deve ser Integer ou um tipo que amplie para Integer.NUMBER
Operadores Binários +,-,*, e Mod
A tabela a seguir mostra o resultado de tipos de dados para o binário + e – operadores e a * e Mod operadores.Observe que essa tabela é simétrica; para uma dada combinação de tipos de dado de operandos, o tipo de dado do resultado é o mesmo, independemente da ordem dos 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 |
\ O operador
A tabela seguinte mostra tipos de dado de resultado para o operador \.Observe que essa tabela é simétrica; para uma dada combinação de tipos de dado de operandos, o tipo de dado do resultado é o mesmo, independemente da ordem dos 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 |
Se ambos os operandos de \ forem Decimal,Single, ou Double, Visual Basic tenta convertê-los para Long antes de realizar a operação, e o tipo de dado do resultado será Long.
Comparações Relacionais e Bit a Bit
The result data type of a relational operation (=, <>, <, >, <=, >=) is always BooleanTipo de dados Boolean (Visual Basic).O mesmo é válido para operações lógicas (And,AndAlso,Not, Or,OrElse,Xor) em operandos Boolean.
O tipo de dados do resultado de uma operação lógica bit a bit com inteiro depende do tipo de dado dos operandos.Observe que AndAlso e OrElse são definidos somente para Boolean, e Visual Basic converte cada operando conforme necessário para Boolean antes de realizar a operação.
=, < >, <>,, < =, e > = operadores
Se ambos os operandos forem Boolean, Visual Basic considera True como menos que False.Se um tipo número é comparado com uma String, Visual Basic tenta converter a String para Double antes da operação.Um operando Char ou Date pode ser comparado somente com outro operando do mesmo tipo.O tipo de dado do resultado é sempre Boolean.
Operador Not bit a bit
A tabela seguinte mostra tipos de dado de resultado para o operador bit a bit Not.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
Not |
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
Se o operando Decimal,Single,Double, ou String, Visual Basic tenta convertê-lo para Long antes da operação, e o tipo de dado do resultado será Long.
Operadores Bit a Bit, And, or e Xor
A tabela seguinte mostra tipos de dado de resultado para os operadores bit a bit And ,Or. e Xor.Observe que essa tabela é simétrica; para uma dada combinação de tipos de dado de operandos, o tipo de dado do resultado é o mesmo, independemente da ordem dos 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 |
Se um operando for Decimal,Single,Double, ou String, Visual Basic tenta convertê-lo para Long antes da operação, e o tipo de dado do resultado será o mesmo, como se o operando já fosse Long.
Operadores Mistos
O & operador está definido apenas para concatenação de String operandos.Visual BasicConverte cada operando conforme necessário para String antes da operação e o resultado é do tipo de dados sempre String.Para os propósitos do operador &, todas as conversões para String são considerandas abrangentes, mesmo se Option Strict for On.
Os operadores Is e IsNot necessitam que ambos os operandos sejam do tipo de referência.A expressão TypeOf...Is necessita que o primeiro operando seja de tipo de referência e o segundo seja o nome de um tipo de dado.Em todos esses casos, o tipo de dado do resultado será Boolean.
O Like operador está definido apenas para correspondência de padrões de String operandos.Visual Basictenta converter cada operando conforme necessário para String antes da operação.O tipo de dado do resultado é sempre Boolean.
Consulte também
Referência
Resumo do tipo de dados (Visual Basic)
Precedência de operadores em Visual Basic
Operadores listados pela funcionalidade (Visual Basic)
Operadores aritméticos (Visual Basic)
Operadores de comparação (Visual Basic)
Conceitos
Operadores e expressões em Visual Basic
Operadores aritméticos em Visual Basic
Operadores de comparação em Visual Basic