Tipos de dados de resultados do operador (Visual Basic)
Visual Basic determina o tipo de dados de resultado de uma operação com base nos tipos de dados dos operandos. Em alguns casos, esse pode ser um tipo de dados com um intervalo maior do que o de qualquer operando.
Intervalos de tipos de dados
Os intervalos dos tipos de dados relevantes, por ordem do menor para o maior, são os seguintes:
Booleano — dois valores possíveis
Curto, UShort — 65.536 (6,5...E+4) valores integrais possíveis
Inteiro, 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 7,9...E+28 (valor absoluto)
Single — intervalo máximo 3,4...E+38 (valor absoluto)
Duplo — intervalo máximo 1,7...E+308 (valor absoluto)
Para obter mais informações sobre tipos de dados do Visual Basic, consulte Tipos de dados.
Se um operando for avaliado como Nothing, os operadores aritméticos do Visual Basic o tratarão como zero.
Aritmética decimal
Observe que o tipo de dados Decimal não é de ponto flutuante nem inteiro.
Se o operando de um , , , ou operação é Decimal
e o outro não Single
é ou Double
, o Visual Basic amplia o outro operando para Decimal
.Mod
/
*
–
+
Ele executa a operação em Decimal
, e o tipo de dados de resultado é Decimal
.
Aritmética de Ponto Flutuante
Visual Basic executa a maioria da aritmética de ponto flutuante em Double, que é o tipo de dados mais eficiente para essas operações. No entanto, se um operando é único e o outro não Double
é, Visual Basic executa a operação em Single
. Ele amplia cada operando conforme necessário para o tipo de dados apropriado antes da operação, e o resultado tem esse tipo de dados.
/ e ^ Operadores
O /
operador é definido apenas para os tipos de dados Decimal, Single e Double. Visual Basic amplia cada operando conforme necessário para o tipo de dados apropriado antes da operação, e o resultado tem esse tipo de dados.
A tabela a seguir mostra os tipos de dados de resultado para o /
operador. Note que esta tabela é simétrica; Para uma determinada combinação de tipos de dados de operando, o tipo de dados de resultado é o mesmo, independentemente da ordem dos operandos.
Decimal |
Single |
Double |
Qualquer tipo de inteiro | |
---|---|---|---|---|
Decimal |
Decimal | Única | Duplo | Decimal |
Single |
Única | Única | Duplo | Única |
Double |
Duplo | Duplo | Duplo | Duplo |
Qualquer tipo de inteiro | Decimal | Única | Duplo | Duplo |
O ^
operador é definido apenas para o tipo de Double
dados. Visual Basic amplia cada operando conforme necessário para Double
antes da operação, e o tipo de dados de resultado é sempre Double
.
Aritmética Inteira
O tipo de dados de resultado de uma operação inteira depende dos tipos de dados dos operandos. Em geral, o Visual Basic usa as seguintes políticas para determinar o tipo de dados de resultado:
Se ambos os operandos de um operador binário tiverem o mesmo tipo de dados, o resultado terá esse tipo de dados. Uma exceção é
Boolean
, que é forçada aShort
.Se um operando não assinado participar com um operando assinado, o resultado terá um tipo assinado com pelo menos um intervalo tão grande quanto qualquer um dos operandos.
Caso contrário, o resultado geralmente tem o maior dos dois tipos de dados de operando.
Observe que o tipo de dados de resultado pode não ser o mesmo que qualquer tipo de dados de operando.
Nota
O tipo de dados de resultado nem sempre é grande o suficiente para armazenar todos os valores possíveis resultantes da operação. Uma OverflowException exceção pode ocorrer se o valor for muito grande para o tipo de dados de resultado.
Unary + e – Operadores
A tabela a seguir mostra os tipos de dados de resultado para os dois operadores +
unários e –
.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Unário + |
Curto | SByte | Byte | Curto | UShort | Número inteiro | UInteger | Longo | ULong |
Unário – |
Curto | SByte | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Decimal |
<< e >> Operadores
A tabela a seguir mostra os tipos de dados de resultado para os dois operadores <<
de deslocamento de bits e >>
. Visual Basic trata cada operador de deslocamento de bits como um operador unário em seu operando esquerdo (o padrão de bits a ser deslocado).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
<< , >> |
Curto | SByte | Byte | Curto | UShort | Número inteiro | UInteger | Longo | ULong |
Se o operando esquerdo for , , ou , o Visual Basic tentará convertê-lo em Long
antes da operação e o tipo de dados resultante for Long
.String
Double
Single
Decimal
O operando direito (o número de posições de bit a serem deslocadas) deve ser Integer
ou um tipo que se amplie para Integer
.
Operadores binários +, –, * e Mod
A tabela a seguir mostra os tipos de dados de resultado para o binário +
e –
operadores e os *
operadores and Mod
. Note que esta tabela é simétrica; Para uma determinada combinação de tipos de dados de operando, o tipo de dados de resultado é o mesmo, independentemente da ordem dos operandos.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Curto | SByte | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Decimal |
SByte |
SByte | SByte | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Decimal |
Byte |
Curto | Curto | Byte | Curto | UShort | Número inteiro | UInteger | Longo | ULong |
Short |
Curto | Curto | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Decimal |
UShort |
Número inteiro | Número inteiro | UShort | Número inteiro | UShort | Número inteiro | UInteger | Longo | ULong |
Integer |
Número inteiro | Número inteiro | Número inteiro | Número inteiro | Número inteiro | Número inteiro | Longo | Longo | Decimal |
UInteger |
Longo | Longo | UInteger | Longo | UInteger | Longo | UInteger | Longo | ULong |
Long |
Longo | Longo | Longo | Longo | Longo | Longo | Longo | Longo | Decimal |
ULong |
Decimal | Decimal | ULong | Decimal | ULong | Decimal | ULong | Decimal | ULong |
\ Operador
A tabela a seguir mostra os tipos de dados de resultado para o \
operador. Note que esta tabela é simétrica; Para uma determinada combinação de tipos de dados de operando, o tipo de dados de resultado é o mesmo, independentemente da ordem dos operandos.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Curto | SByte | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Longo |
SByte |
SByte | SByte | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Longo |
Byte |
Curto | Curto | Byte | Curto | UShort | Número inteiro | UInteger | Longo | ULong |
Short |
Curto | Curto | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Longo |
UShort |
Número inteiro | Número inteiro | UShort | Número inteiro | UShort | Número inteiro | UInteger | Longo | ULong |
Integer |
Número inteiro | Número inteiro | Número inteiro | Número inteiro | Número inteiro | Número inteiro | Longo | Longo | Longo |
UInteger |
Longo | Longo | UInteger | Longo | UInteger | Longo | UInteger | Longo | ULong |
Long |
Longo | Longo | Longo | Longo | Longo | Longo | Longo | Longo | Longo |
ULong |
Longo | Longo | ULong | Longo | ULong | Longo | ULong | Longo | ULong |
Se o operando do operador for decimal, simples ou duplo, o Visual Basic tentará convertê-lo em Muito antes da operação e o tipo de \
dados resultante for Long
.
Comparações relacionais e bitwise
O tipo de dados de resultado de uma operação relacional (=
, <>
, <
, >
, <=
, >=
) é sempre Boolean
Boolean Data Type. O mesmo é verdadeiro para operações lógicas (And
, AndAlso
, , Not
, OrElse
Or
, Xor
) em Boolean
operandos.
O tipo de dados de resultado de uma operação lógica bit a bit depende dos tipos de dados dos operandos. Observe que AndAlso
e OrElse
são definidos apenas para Boolean
, e Visual Basic converte cada operando conforme necessário para Boolean
antes de executar a operação.
=, <>, <, >, <=, e >= Operadores
Se ambos os operandos forem Boolean
, o Visual Basic considerará True
ser menor que False
. Se um tipo numérico for comparado com um String
, o Visual Basic tentará converter o String
para Double
antes da operação. Um Char
ou Date
operando pode ser comparado apenas com outro operando do mesmo tipo de dados. O tipo de dados de resultado é sempre Boolean
.
Bitwise Não Operador
A tabela a seguir mostra os tipos de dados de resultado para o operador bitwise Not
.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Not |
Boolean | SByte | Byte | Curto | UShort | Número inteiro | UInteger | Longo | ULong |
Se o operando for , , , ou String
, o Visual Basic tentará convertê-lo em Long
antes da operação e o tipo de dados resultante for Long
. Double
Single
Decimal
Operadores Bitwise e, OR e Xor
A tabela a seguir mostra os tipos de dados de resultado para os operadores bit a And
bit , Or
e Xor
. Note que esta tabela é simétrica; Para uma determinada combinação de tipos de dados de operando, o tipo de dados de resultado é o mesmo, independentemente da ordem dos operandos.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
---|---|---|---|---|---|---|---|---|---|
Boolean |
Boolean | SByte | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Longo |
SByte |
SByte | SByte | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Longo |
Byte |
Curto | Curto | Byte | Curto | UShort | Número inteiro | UInteger | Longo | ULong |
Short |
Curto | Curto | Curto | Curto | Número inteiro | Número inteiro | Longo | Longo | Longo |
UShort |
Número inteiro | Número inteiro | UShort | Número inteiro | UShort | Número inteiro | UInteger | Longo | ULong |
Integer |
Número inteiro | Número inteiro | Número inteiro | Número inteiro | Número inteiro | Número inteiro | Longo | Longo | Longo |
UInteger |
Longo | Longo | UInteger | Longo | UInteger | Longo | UInteger | Longo | ULong |
Long |
Longo | Longo | Longo | Longo | Longo | Longo | Longo | Longo | Longo |
ULong |
Longo | Longo | ULong | Longo | ULong | Longo | ULong | Longo | ULong |
Se um operando for , , , ou String
, o Visual Basic tentará convertê-lo em Long
antes da operação e o tipo de dados resultante for o mesmo como se esse operando já tivesse sido Long
. Double
Single
Decimal
Operadores Diversos
O &
operador é definido apenas para concatenação de String
operandos. Visual Basic converte cada operando conforme necessário para String
antes da operação, e o tipo de dados de resultado é sempre String
. Para efeitos do &
operador, todas as conversões a String
são consideradas como um alargamento, mesmo que Option Strict
seja On
.
Os Is
operadores e IsNot
exigem que ambos os operandos sejam de um tipo de referência. A TypeOf
expressão ...Is
requer que o primeiro operando seja de um tipo de referência e o segundo operando seja o nome de um tipo de dados. Em todos esses casos, o tipo de dados de resultado é Boolean
.
O Like
operador é definido apenas para correspondência de padrões de String
operandos. Visual Basic tenta converter cada operando conforme necessário para String
antes da operação. O tipo de dados de resultado é sempre Boolean
.