Condividi tramite


Tipi di dati dei risultati dell'operatore (Visual Basic)

Visual Basic determina il tipo di dati dei risultati di un'operazione in base ai tipi di dati degli operandi. In alcuni casi può trattarsi di un tipo di dati con un intervallo maggiore rispetto a quello di uno degli operandi.

Intervalli di tipi di dati

Gli intervalli dei tipi di dati pertinenti, in ordine dal più piccolo al più grande, sono i seguenti:

  • Boolean : due valori possibili

  • SByte, Byte - 256 possibili valori integrali

  • Short, UShort — 65.536 (6.5...E+4) possibili valori integrali

  • Integer, UInteger — 4.294.967.296 (4,2...E+9) possibili valori integrali

  • Long, ULong — 18.446.744.073.709.551.615 (1,8...E+19) possibili valori integrali

  • Decimal — 1,5...E+29 possibili valori integrali, intervallo massimo 7,9...E+28 (valore assoluto)

  • Single — intervallo massimo 3,4...E+38 (valore assoluto)

  • Double — intervallo massimo 1,7...E+308 (valore assoluto)

Per altre informazioni sui tipi di dati di Visual Basic, vedere Tipi di dati.

Se un operando restituisce Nothing, gli operatori aritmetici di Visual Basic lo considerano zero.

Aritmetica decimale

Si noti che il tipo di dati Decimal non è né a virgola mobile né integer.

Se uno degli operandi di un'operazione +, , */, o Mod è e l'altro non Single è Decimal o Double, Visual Basic estende l'altro operando a Decimal. Esegue l'operazione in Decimale il tipo di dati dei risultati è Decimal.

Floating-Point aritmetica

Visual Basic esegue la maggior parte dell'aritmetica a virgola mobile in Double, ovvero il tipo di dati più efficiente per tali operazioni. Tuttavia, se un operando è Single e l'altro non Doubleè , Visual Basic esegue l'operazione in Single. Estende ogni operando in base alle esigenze al tipo di dati appropriato prima dell'operazione e il risultato ha tale tipo di dati.

Operatori / e ^

L'operatore / è definito solo per i tipi di dati Decimal, Single e Double . Visual Basic estende ogni operando in base alle esigenze al tipo di dati appropriato prima dell'operazione e il risultato ha tale tipo di dati.

Nella tabella seguente vengono illustrati i tipi di dati dei risultati per l'operatore / . Si noti che questa tabella è simmetrica; per una determinata combinazione di tipi di dati dell'operando, il tipo di dati dei risultati è lo stesso indipendentemente dall'ordine degli operandi.

Decimal Single Double Qualsiasi tipo integer
Decimal Decimale Singolo Doppio Decimale
Single Singolo Singolo Doppio Singolo
Double Doppio Doppio Doppio Doppio
Qualsiasi tipo integer Decimale Singolo Doppio Doppio

L'operatore ^ è definito solo per il Double tipo di dati. Visual Basic estende ogni operando in base alle esigenze prima Double dell'operazione e il tipo di dati del risultato è sempre Double.

Aritmetica integer

Il tipo di dati risultante di un'operazione integer dipende dai tipi di dati degli operandi. In generale, Visual Basic usa i criteri seguenti per determinare il tipo di dati dei risultati:

  • Se entrambi gli operandi di un operatore binario hanno lo stesso tipo di dati, il risultato ha tale tipo di dati. Un'eccezione è Boolean, che viene forzata a Short.

  • Se un operando senza segno partecipa a un operando con segno, il risultato ha un tipo con segno con almeno un intervallo di grandi dimensioni come operando.

  • In caso contrario, il risultato ha in genere il più grande dei due tipi di dati operandi.

Si noti che il tipo di dati del risultato potrebbe non essere uguale a uno dei due tipi di dati dell'operando.

Annotazioni

Il tipo di dati dei risultati non è sempre sufficientemente grande da contenere tutti i valori possibili risultanti dall'operazione. Un'eccezione OverflowException può verificarsi se il valore è troppo grande per il tipo di dati del risultato.

Operatori unari + e -

Nella tabella seguente vengono illustrati i tipi di dati dei risultati per i due operatori unari e +.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Unario + Breve SByte Byte Breve UShort Integer UInteger Lungo ULong
Unario Breve SByte Breve Breve Integer Integer Lungo Lungo Decimale

<<Operatori e >>

Nella tabella seguente vengono illustrati i tipi di dati dei risultati per i due operatori di spostamento a bit e <<>>. Visual Basic considera ogni operatore di spostamento di bit come operatore unario sul relativo operando sinistro (modello di bit da spostare).

Boolean SByte Byte Short UShort Integer UInteger Long ULong
<<, >> Breve SByte Byte Breve UShort Integer UInteger Lungo ULong

Se l'operando sinistro è Decimal, DoubleSingle, o String, Visual Basic tenta di convertirlo in Long prima dell'operazione e il tipo di dati del risultato è Long. L'operando destro (il numero di posizioni di bit da spostare) deve essere Integer o un tipo che si estende a Integer.

Operatori Binari +, –, *e Mod

Nella tabella seguente vengono illustrati i tipi di dati dei risultati per gli operatori binari + e e gli * operatori e Mod . Si noti che questa tabella è simmetrica; per una determinata combinazione di tipi di dati dell'operando, il tipo di dati dei risultati è lo stesso indipendentemente dall'ordine degli operandi.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Breve SByte Breve Breve Integer Integer Lungo Lungo Decimale
SByte SByte SByte Breve Breve Integer Integer Lungo Lungo Decimale
Byte Breve Breve Byte Breve UShort Integer UInteger Lungo ULong
Short Breve Breve Breve Breve Integer Integer Lungo Lungo Decimale
UShort Integer Integer UShort Integer UShort Integer UInteger Lungo ULong
Integer Integer Integer Integer Integer Integer Integer Lungo Lungo Decimale
UInteger Lungo Lungo UInteger Lungo UInteger Lungo UInteger Lungo ULong
Long Lungo Lungo Lungo Lungo Lungo Lungo Lungo Lungo Decimale
ULong Decimale Decimale ULong Decimale ULong Decimale ULong Decimale ULong

\Operatore

Nella tabella seguente vengono illustrati i tipi di dati dei risultati per l'operatore \ . Si noti che questa tabella è simmetrica; per una determinata combinazione di tipi di dati dell'operando, il tipo di dati dei risultati è lo stesso indipendentemente dall'ordine degli operandi.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Breve SByte Breve Breve Integer Integer Lungo Lungo Lungo
SByte SByte SByte Breve Breve Integer Integer Lungo Lungo Lungo
Byte Breve Breve Byte Breve UShort Integer UInteger Lungo ULong
Short Breve Breve Breve Breve Integer Integer Lungo Lungo Lungo
UShort Integer Integer UShort Integer UShort Integer UInteger Lungo ULong
Integer Integer Integer Integer Integer Integer Integer Lungo Lungo Lungo
UInteger Lungo Lungo UInteger Lungo UInteger Lungo UInteger Lungo ULong
Long Lungo Lungo Lungo Lungo Lungo Lungo Lungo Lungo Lungo
ULong Lungo Lungo ULong Lungo ULong Lungo ULong Lungo ULong

Se uno degli operandi dell'operatore \ è Decimal, Single o Double, Visual Basic tenta di convertirlo in Long prima dell'operazione e il tipo di dati del risultato è Long.

Confronti relazionali e bit per bit

Il tipo di dati risultante di un'operazione relazionale (=, <>, <>, <=, , , >=) è sempre Booleanun tipo di dati booleano. Lo stesso vale per le operazioni logiche (And, AndAlso, Not, OrOrElse, , Xor) sugli Boolean operandi.

Il tipo di dati risultante di un'operazione logica bit per bit dipende dai tipi di dati degli operandi. Si noti che AndAlso e OrElse sono definiti solo per Booleane Visual Basic converte ogni operando in base alle Boolean esigenze prima di eseguire l'operazione.

Operatori =, <>, <, >= <, e >=

Se entrambi gli operandi sono Boolean, Visual Basic considera True minore di False. Se un tipo numerico viene confrontato con un Stringoggetto , Visual Basic tenta di convertire in StringDouble prima dell'operazione. Un Char operando o Date può essere confrontato solo con un altro operando dello stesso tipo di dati. Il tipo di dati dei risultati è sempre Boolean.

Operatore not bit per bit

Nella tabella seguente vengono illustrati i tipi di dati dei risultati per l'operatore bit per Not bit.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Not Booleano SByte Byte Breve UShort Integer UInteger Lungo ULong

Se l'operando è , , o String, Visual Basic tenta di convertirlo in Long prima dell'operazione e il tipo di dati del risultato è Long. DoubleSingleDecimal

Operatori And, Or e Xor bit per bit

Nella tabella seguente vengono illustrati i tipi di dati dei risultati per gli operatori bit per Andbit , Ore Xor . Si noti che questa tabella è simmetrica; per una determinata combinazione di tipi di dati dell'operando, il tipo di dati dei risultati è lo stesso indipendentemente dall'ordine degli operandi.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Booleano SByte Breve Breve Integer Integer Lungo Lungo Lungo
SByte SByte SByte Breve Breve Integer Integer Lungo Lungo Lungo
Byte Breve Breve Byte Breve UShort Integer UInteger Lungo ULong
Short Breve Breve Breve Breve Integer Integer Lungo Lungo Lungo
UShort Integer Integer UShort Integer UShort Integer UInteger Lungo ULong
Integer Integer Integer Integer Integer Integer Integer Lungo Lungo Lungo
UInteger Lungo Lungo UInteger Lungo UInteger Lungo UInteger Lungo ULong
Long Lungo Lungo Lungo Lungo Lungo Lungo Lungo Lungo Lungo
ULong Lungo Lungo ULong Lungo ULong Lungo ULong Lungo ULong

Se un operando è Decimal, Single, Doubleo String, Visual Basic tenta di convertirlo in Long prima dell'operazione e il tipo di dati del risultato è uguale a se l'operando fosse già stato Long.

Operatori vari

L'operatore & è definito solo per la concatenazione di String operandi. Visual Basic converte ogni operando in base alle String esigenze prima dell'operazione e il tipo di dati dei risultati è sempre String. Ai fini dell'operatore & , tutte le conversioni in String vengono considerate di tipo widening, anche se Option Strict è On.

Gli Is operatori e IsNot richiedono che entrambi gli operandi siano di un tipo riferimento. L'espressione TypeOf...Is richiede che il primo operando sia di un tipo riferimento e il secondo operando sia il nome di un tipo di dati. In tutti questi casi il tipo di dati del risultato è Boolean.

L'operatore Like è definito solo per la corrispondenza dei criteri di String operandi. Visual Basic tenta di convertire ogni operando in base alle String esigenze prima dell'operazione. Il tipo di dati dei risultati è sempre Boolean.

Vedere anche