Condividi tramite


Tipi di dati dei risultati degli operatori

Aggiornamento: novembre 2007

In Visual Basic il tipo di dati del risultato di un'operazione viene determinato in base ai tipi di dati degli operandi. In alcuni casi, può trattarsi di un tipo di dati con un intervallo di valori maggiore rispetto a quello di uno dei due operandi.

Intervalli dei tipi di dati

Di seguito sono riportati gli intervalli dei principali tipi di dati in ordine crescente:

  • Boolean - Due valori possibili.

  • SByte, Byte - 256 valori integrali possibili.

  • Short, UShort - 65.536 valori integrali possibili (compresi tra 6,5...E+4).

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

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

  • Decimal - Valori integrali possibili compresi tra 1,5...E+29; intervallo massimo compreso tra 7,9...E+28 (valore assoluto).

  • Single - Intervallo massimo compreso tra 3,4...E+38 (valore assoluto).

  • Double - Intervallo massimo compreso tra 1,7...E+308 (valore assoluto).

Per ulteriori informazioni sui tipi di dati di Visual Basic, vedere Riepilogo dei tipi di dati (Visual Basic).

Se un operando restituisce Nothing, gli operatori aritmetici di Visual Basic considerano tale valore uguale a zero.

Operazioni aritmetiche su valori decimali

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

Se un operando di un'operazione +, –, *, / o Mod è di tipo Decimal e l'altro non è di tipo Single né Double, Visual Basic converte l'altro operando verso il tipo di dati più grande Decimal. L'operazione viene eseguita con il tipo Decimal e il tipo di dati del risultato è Decimal.

Operazioni aritmetiche su valori a virgola mobile

In Visual Basic la maggior parte delle operazioni aritmetiche su valori a virgola mobile viene eseguita con Double, il tipo di dati più efficiente per tali operazioni. Tuttavia, se un operando è di tipo Single e l'altro non è di tipo Double, in Visual Basic l'operazione viene eseguita con il tipo Single. Ciascun operando viene convertito, se necessario, verso il corrispondente tipo di dati più grande prima dell'operazione. Il risultato ottenuto corrisponde a tale tipo di dati.

Operatori / e ^

L'operatore / è definito solo per i tipi di dati Decimal, Single e Double. Visual Basic converte, se necessario, ciascun operando verso il corrispondente tipo di dati più grande. Il risultato ottenuto corrisponde a tale tipo di dati.

Nella tabella riportata di seguito vengono illustrati i tipi di dati del risultato per l'operatore /. La tabella è simmetrica. Per una specifica combinazione di tipi di dati degli operandi, infatti, il tipo di dati del risultato sarà lo stesso indipendentemente dall'ordine degli operandi stessi.

Decimal

Single

Double

Qualsiasi tipo di valore integer

Decimal

Decimal

Single

Double

Double

Single

Single

Single

Double

Double

Double

Double

Double

Double

Double

Qualsiasi tipo di valore integer

Double

Double

Double

Double

L'operatore ^ è definito solo per il tipo di dati Double. Visual Basic converte, se necessario, ciascun operando verso il tipo più grande Double prima dell'operazione e il tipo di dati del risultato sarà sempre Double.

Operazioni aritmetiche su valori integer

Il tipo di dati del risultato di un'operazione su valori integer varia in base ai tipi di dati degli operandi. In generale, in Visual Basic vengono utilizzati i seguenti criteri per determinare il tipo di dati del risultato:

  • Se per entrambi gli operandi di un operatore binario è definito lo stesso tipo di dati, il risultato sarà dello stesso tipo. Un'eccezione è costituita dal tipo Boolean, che viene forzatamente convertito in Short.

  • Se per l'operazione vengono utilizzati un operando con segno e uno senza segno, il risultato sarà un tipo con segno con un intervallo di grandezza pari almeno a quello di uno dei due operandi.

  • Negli altri casi, il risultato è in genere costituito dal più grande dei due tipi di dati degli operandi.

Si noti che il tipo di dati del risultato potrebbe essere diverso dal tipo di dati di uno dei due operandi.

Nota:

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

Operatori unari + e –

Nella tabella riportata di seguito vengono illustrati i tipi di dati del risultato per i due operatori unari, + e –.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Operatore unario +

Short

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Operatore unario –

Short

SByte

Short

Short

Integer

Integer

Long

Long

Decimal

Operatori << e >>

Nella tabella riportata di seguito vengono illustrati i tipi di dati del risultato per i due operatori di spostamento di bit, << e >>. In Visual Basic ciascun operatore di spostamento di bit viene considerato come operatore unario sul relativo operando di sinistra (lo schema di bit da spostare).

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

<<, >>

Short

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Se l'operando di sinistra è di tipo Decimal, Single, Double o String, Visual Basic tenta di convertirlo nel tipo Long prima dell'operazione e il tipo di dati del risultato sarà Long. L'operando di destra (il numero di posizioni di bit da spostare) deve essere di tipo Integer oppure di un tipo che viene convertito verso il tipo più grande Integer.

Operatori binari +, –, * e Mod

Nella tabella riportata di seguito vengono illustrati i tipi di dati del risultato per gli operatori binari + e –, nonché per gli operatori * e Mod. La tabella è simmetrica. Per una specifica combinazione di tipi di dati degli operandi, infatti, il tipo di dati del risultato sarà lo stesso indipendentemente dall'ordine degli operandi stessi.

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

Operatore \

Nella tabella riportata di seguito vengono illustrati i tipi di dati del risultato per l'operatore \. La tabella è simmetrica. Per una specifica combinazione di tipi di dati degli operandi, infatti, il tipo di dati del risultato sarà lo stesso indipendentemente dall'ordine degli operandi stessi.

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 uno dei due operandi dell'operatore \ è di tipo Decimal, Single o Double, Visual Basic tenta di convertirlo nel tipo Long prima dell'operazione e il tipo di dati del risultato sarà Long.

Confronti relazionali e bit per bit

Il tipo di dati del risultato di un'operazione relazionale (=, <>, <, >, <=, >=) sarà sempre Boolean. Vedere Tipo di dati Boolean (Visual Basic). Lo stesso vale anche per le operazioni logiche (And, AndAlso, Not, Or, OrElse, Xor) su operandi di tipo Boolean.

Il tipo di dati del risultato di un'operazione logica bit per bit varia in base ai tipi di dati degli operandi. Si noti che AndAlso e OrElse sono definiti solo per il tipo Boolean e Visual Basic converte, se necessario, ciascun operando nel tipo Boolean prima che venga eseguita l'operazione.

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

Se entrambi gli operandi sono di tipo Boolean, in Visual BasicTrue viene considerato inferiore a False. Se un tipo numerico viene confrontato con un tipo String, Visual Basic tenta di convertire il tipo String in Double prima dell'operazione. È possibile confrontare un operando Char o Date solo con un altro operando dello stesso tipo di dati. Il tipo di dati del risultato sarà sempre Boolean.

Operatore Not bit per bit

Nella tabella riportata di seguito vengono illustrati i tipi di dati del risultato per l'operatore Not bit per bit.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Not

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Se l'operando è di tipo Decimal, Single, Double o String, Visual Basic tenta di convertirlo nel tipo Long prima dell'operazione e il tipo di dati del risultato sarà Long.

Operatori And, Or e Xor bit per bit

Nella tabella riportata di seguito vengono illustrati i tipi di dati del risultato per gli operatori And, Or e Xor bit per bit. La tabella è simmetrica. Per una specifica combinazione di tipi di dati degli operandi, infatti, il tipo di dati del risultato sarà lo stesso indipendentemente dall'ordine degli operandi stessi.

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 un operando è di tipo Decimal, Single, Double o String, Visual Basic tenta di convertirlo nel tipo Long prima dell'operazione e il tipo di dati del risultato sarà lo stesso come se l'operando fosse stato in precedenza di tipo Long.

Operatori vari

L'operatore & è definito solo per concatenazioni di operandi String. Visual Basic converte, se necessario, ciascun operando nel tipo String prima dell'operazione e il tipo di dati del risultato sarà sempre String. Per gli scopi dell'operatore &, tutte le conversioni nel tipo String vengono considerate conversioni verso un tipo di dati più grande, anche se l'istruzione Option Strict è impostata su On.

Per gli operatori Is e IsNot è necessario che entrambi gli operandi siano di un tipo di riferimento. Per l'espressione TypeOf...Is è necessario che il primo operando sia di un tipo di riferimento e il secondo sia il nome di un tipo di dati. In tutti questi casi, il tipo di dati del risultato sarà Boolean.

L'operatore Like è definito solo per i criteri di ricerca di operandi String. Visual Basic tenta, se necessario, di convertire ciascun operando nel tipo String prima dell'operazione. Il tipo di dati del risultato sarà sempre Boolean.

Vedere anche

Concetti

Operatori ed espressioni in Visual Basic

Operatori aritmetici in Visual Basic

Operatori di confronto in Visual Basic

Riferimenti

Riepilogo dei tipi di dati (Visual Basic)

Precedenza tra gli operatori in Visual Basic

Elenco degli operatori per funzionalità

Operatori aritmetici (Visual Basic)

Operatori di confronto (Visual Basic)

Istruzione Option Strict

Altre risorse

Operatori (Visual Basic)