Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O 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 tipo de dados
Os intervalos dos tipos de dados relevantes, em ordem de menor a maior, são os seguintes:
Booliano – 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) possíveis valores integrais
Long, ULong — 18.446.744.073.709.551.615 (1.8...E+19) possíveis valores integrais
Decimal — 1.5...E+29 valores integrais possíveis, intervalo máximo 7.9...E+28 (valor absoluto)
Único – 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 é ponto flutuante nem inteiro.
Se o operando de um +, –, *, /ou Mod operação for Decimal e o outro não Single for ou Double, o Visual Basic ampliará o outro operando para Decimal. Ele executa a operação e Decimalo tipo de dados de resultado é Decimal.
Floating-Point aritmética
O Visual Basic executa a aritmética de ponto flutuante no Double, que é o tipo de dados mais eficiente para essas operações. No entanto, se um operando for Single e o outro não Doublefor, o Visual Basic executará 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 . O 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. Observe que esta tabela é simétrica; para uma determinada combinação de tipos de dados operando, o tipo de dados de resultado é o mesmo, independentemente da ordem dos operandos.
Decimal |
Single |
Double |
Qualquer tipo inteiro | |
|---|---|---|---|---|
Decimal |
Decimal | Solteiro | Duplo | Decimal |
Single |
Solteiro | Solteiro | Duplo | Solteiro |
Double |
Duplo | Duplo | Duplo | Duplo |
| Qualquer tipo inteiro | Decimal | Solteiro | Duplo | Duplo |
O ^ operador é definido apenas para o Double tipo de dados. O Visual Basic amplia cada operando conforme necessário antes Double da operação e o tipo de dados de resultado é sempre Double.
Aritmética inteiro
O tipo de dados de resultado de uma operação de inteiro 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 sem sinal 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 operando.
Observação
O tipo de dados de resultado nem sempre é grande o suficiente para manter 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.
Operadores Unary + e –
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 | Long | ULong |
Unário – |
Curto | SByte | Curto | Curto | Número Inteiro | Número Inteiro | Long | Long | Decimal |
<< e >> operadores
A tabela a seguir mostra os tipos de dados de resultado para os dois operadores << de turno de bit e >>. O Visual Basic trata cada operador de turno de bits como um operador unário em seu operando esquerdo (o padrão de bit a ser deslocado).
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
<<, >> |
Curto | SByte | byte | Curto | UShort | Número Inteiro | UInteger | Long | ULong |
Se o operando esquerdo for Decimal, Single, Doubleou String, o Visual Basic tentar convertê-lo Long antes da operação e o tipo de dados de resultado for Long. O operando à direita (o número de posições de bit a ser deslocado) deve ser Integer ou um tipo que se expanda para Integer.
Operadores Binários +, –, *e Mod
A tabela a seguir mostra os tipos de dados de resultado para o binário + e – os operadores e os *Mod operadores. Observe que esta tabela é simétrica; para uma determinada combinação de tipos de dados 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 | Long | Long | Decimal |
SByte |
SByte | SByte | Curto | Curto | Número Inteiro | Número Inteiro | Long | Long | Decimal |
Byte |
Curto | Curto | byte | Curto | UShort | Número Inteiro | UInteger | Long | ULong |
Short |
Curto | Curto | Curto | Curto | Número Inteiro | Número Inteiro | Long | Long | Decimal |
UShort |
Número Inteiro | Número Inteiro | UShort | Número Inteiro | UShort | Número Inteiro | UInteger | Long | ULong |
Integer |
Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | 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
A tabela a seguir mostra os tipos de dados de resultado para o \ operador. Observe que esta tabela é simétrica; para uma determinada combinação de tipos de dados 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 | Long | Long | Long |
SByte |
SByte | SByte | Curto | Curto | Número Inteiro | Número Inteiro | Long | Long | Long |
Byte |
Curto | Curto | byte | Curto | UShort | Número Inteiro | UInteger | Long | ULong |
Short |
Curto | Curto | Curto | Curto | Número Inteiro | Número Inteiro | Long | Long | Long |
UShort |
Número Inteiro | Número Inteiro | UShort | Número Inteiro | UShort | Número Inteiro | UInteger | Long | ULong |
Integer |
Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | 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 o operando do \ operador for Decimal, Single ou Double, o Visual Basic tentará convertê-lo em Long before the operation e o tipo de dados de resultado for Long.
Comparações relacionais e bit a bit
O tipo de dados de resultado de uma operação relacional (=, , <>, <, >, <=, >=) é sempre Booleantipo de dados booliano. O mesmo é verdadeiro para operações lógicas (And, , AndAlso, Not, Or, OrElse, 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 o Visual Basic converte cada operando conforme necessário antes Boolean de executar a operação.
=, <>, <, >, <=, e >= Operadores
Se ambos os operandos forem Boolean, o Visual Basic considerará True menor que False. Se um tipo numérico for comparado com um String, o Visual Basic tentará convertê-lo StringDouble antes da operação. Um Char ou Date operando só pode ser comparado com outro operando do mesmo tipo de dados. O tipo de dados de resultado é sempre Boolean.
Operador Não Bit a Bit
A tabela a seguir mostra os tipos de dados de resultado para o operador bit a bit Not .
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Not |
booleano | SByte | byte | Curto | UShort | Número Inteiro | UInteger | Long | ULong |
Se o operando for Decimal, Single, Doubleou String, o Visual Basic tentar convertê-lo Long antes da operação e o tipo de dados de resultado for Long.
Operadores Bit a bit E, Ou e Xor
A tabela a seguir mostra os tipos de dados de resultado para o bit a bit AndOre Xor os operadores. Observe que esta tabela é simétrica; para uma determinada combinação de tipos de dados operando, o tipo de dados de resultado é o mesmo, independentemente da ordem dos operandos.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
booleano | SByte | Curto | Curto | Número Inteiro | Número Inteiro | Long | Long | Long |
SByte |
SByte | SByte | Curto | Curto | Número Inteiro | Número Inteiro | Long | Long | Long |
Byte |
Curto | Curto | byte | Curto | UShort | Número Inteiro | UInteger | Long | ULong |
Short |
Curto | Curto | Curto | Curto | Número Inteiro | Número Inteiro | Long | Long | Long |
UShort |
Número Inteiro | Número Inteiro | UShort | Número Inteiro | UShort | Número Inteiro | UInteger | Long | ULong |
Integer |
Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | Número Inteiro | 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, Doubleou String, o Visual Basic tentar convertê-lo Long antes da operação, e o tipo de dados de resultado for o mesmo que se esse operando já tivesse sido Long.
Operadores diversos
O & operador é definido apenas para concatenação de String operandos. O Visual Basic converte cada operando conforme necessário antes String da operação e o tipo de dados de resultado é sempre String. Para fins do & operador, todas as conversões a String serem consideradas ampliadas, mesmo que Option Strict sejam On.
Os Is operadores e os IsNot operadores exigem que ambos os operandos sejam de um tipo de referência. A TypeOfexpressã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. O Visual Basic tenta converter cada operando conforme necessário antes String da operação. O tipo de dados de resultado é sempre Boolean.