Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
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 aShort.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.