Megosztás a következőn keresztül:


Az operátoreredmények adattípusai (Visual Basic)

A Visual Basic egy művelet eredményadattípusát határozza meg az operandusok adattípusa alapján. Bizonyos esetekben ez egy olyan adattípus, amelynek tartománya nagyobb, mint bármelyik operandus esetében.

Adattípus-tartományok

A releváns adattípusok tartományai a legkisebbtől a legnagyobbig a következők:

  • Logikai – két lehetséges érték

  • SByte, Byte – 256 lehetséges integrálérték

  • Rövid, UShort – 65 536 (6,5...E+4) lehetséges integrálértékek

  • Egész szám, UInteger – 4 294 967 296 (4,2...E+9) lehetséges integrálértékek

  • Hosszú, ULong – 18 446 744 073 709 551 615 (1,8...E+19) lehetséges integrálértékek

  • Decimális — 1,5...E+29 lehetséges integrálértékek, maximális tartomány 7,9...E+28 (abszolút érték)

  • Egyetlen – maximális tartomány 3,4...E+38 (abszolút érték)

  • Dupla – maximális tartomány 1,7...E+308 (abszolút érték)

A Visual Basic adattípusokkal kapcsolatos további információkért lásd : Adattípusok.

Ha egy operandus a Semmi értéket értékeli ki, a Visual Basic aritmetikai operátorok nullának tekintik.

Decimális számtani

Vegye figyelembe, hogy a decimális adattípus nem lebegőpontos vagy egész szám.

Ha egy +, , , /*vagy művelet Decimal operandusa, a Mod másik pedig nemSingle, akkor Doublea Visual Basic kibővíti a másik operandustDecimal. Végrehajtja a műveletet a következőbenDecimal, és az eredmény adattípusa.Decimal

Lebegőpontos számtani

A Visual Basic a legtöbb lebegőpontos aritmetikai műveletet dupla értéken hajtja végre, amely az ilyen műveletek leghatékonyabb adattípusa. Ha azonban az egyik operandus önálló , a másik pedig nem Double, a Visual Basic végrehajtja a műveletet a következőben Single: . Szükség szerint kibővíti az egyes operandusokat a megfelelő adattípusra a művelet előtt, és az eredmény ilyen adattípussal rendelkezik.

/ és ^ operátorok

Az / operátor csak a tizedes, az egy és a kettős adattípushoz van definiálva. A Visual Basic szükség szerint kibővíti az egyes operandusokat a megfelelő adattípusra a művelet előtt, és az eredmény ilyen adattípussal rendelkezik.

Az alábbi táblázat az operátor eredményadattípusát / mutatja be. Vegye figyelembe, hogy ez a táblázat szimmetrikus; az operandus adattípusok adott kombinációja esetén az eredmény adattípusa az operandusok sorrendjétől függetlenül megegyezik.

Decimal Single Double Bármilyen egész számtípus
Decimal Decimális Egyszeres Dupla Decimális
Single Egyszeres Egyszeres Dupla Egyszeres
Double Dupla Dupla Dupla Dupla
Bármilyen egész számtípus Decimális Egyszeres Dupla Dupla

Az ^ operátor csak az Double adattípushoz van definiálva. A Visual Basic szükség szerint Double kibővíti az egyes operandusokat a művelet előtt, és az eredmény adattípusa mindig Doubleaz .

Egész számtani

Az egész szám művelet eredmény adattípusa az operandusok adattípusától függ. A Visual Basic általában a következő szabályzatokat használja az eredmény adattípusának meghatározásához:

  • Ha egy bináris operátor mindkét operandusa ugyanazzal az adattípussal rendelkezik, az eredménynek ez az adattípusa. Ez alól kivételt képeznek Booleana kényszerítettek Short.

  • Ha egy aláíratlan operandus aláírt operandussal vesz részt, az eredmény egy aláírt típussal rendelkezik, amelynek tartománya legalább akkora, mint bármelyik operandus.

  • Ellenkező esetben az eredmény általában a két operandus adattípus közül a nagyobb.

Vegye figyelembe, hogy előfordulhat, hogy az eredmény adattípusa nem azonos az operandus adattípusával.

Feljegyzés

Az eredmény adattípusa nem mindig elég nagy a műveletből eredő összes lehetséges érték tárolásához. Kivétel OverflowException akkor fordulhat elő, ha az érték túl nagy az eredmény adattípusához.

Unary + és – Operátorok

Az alábbi táblázat a két nem naplós operátor + eredményadattípusát és a .

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Unary + Rövid SByte Bájt Rövid UShort Egész UInteger Hosszú ULong
Unary Rövid SByte Rövid Rövid Egész Egész Hosszú Hosszú Decimális

<< és >> operátorok

Az alábbi táblázat a két bitváltásos operátor << eredményadattípusát és >>a . A Visual Basic az egyes bitművelet-operátorokat a bal operandusán (az eltolandó bitmintán) nem látható operátorként kezeli.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
<<, >> Rövid SByte Bájt Rövid UShort Egész UInteger Hosszú ULong

Ha a bal oldali operandus , vagy Stringa Visual Basic megpróbálja átalakítani Long a művelet előttre, és az eredmény adattípusa az Long. DoubleSingleDecimal A jobb operandusnak (az eltolandó bitpozíciók számának) kell lennie, vagy olyan típusnak kell lennie Integer , amely a következőre Integertágul.

Bináris +, –, *és mod operátorok

Az alábbi táblázat a bináris + és operátorok eredményadattípusát, valamint az és Mod operátorokat * mutatja be. Vegye figyelembe, hogy ez a táblázat szimmetrikus; az operandus adattípusok adott kombinációja esetén az eredmény adattípusa az operandusok sorrendjétől függetlenül megegyezik.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Rövid SByte Rövid Rövid Egész Egész Hosszú Hosszú Decimális
SByte SByte SByte Rövid Rövid Egész Egész Hosszú Hosszú Decimális
Byte Rövid Rövid Bájt Rövid UShort Egész UInteger Hosszú ULong
Short Rövid Rövid Rövid Rövid Egész Egész Hosszú Hosszú Decimális
UShort Egész Egész UShort Egész UShort Egész UInteger Hosszú ULong
Integer Egész Egész Egész Egész Egész Egész Hosszú Hosszú Decimális
UInteger Hosszú Hosszú UInteger Hosszú UInteger Hosszú UInteger Hosszú ULong
Long Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Decimális
ULong Decimális Decimális ULong Decimális ULong Decimális ULong Decimális ULong

\Üzemeltető

Az alábbi táblázat az operátor eredményadattípusát \ mutatja be. Vegye figyelembe, hogy ez a táblázat szimmetrikus; az operandus adattípusok adott kombinációja esetén az eredmény adattípusa az operandusok sorrendjétől függetlenül megegyezik.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Rövid SByte Rövid Rövid Egész Egész Hosszú Hosszú Hosszú
SByte SByte SByte Rövid Rövid Egész Egész Hosszú Hosszú Hosszú
Byte Rövid Rövid Bájt Rövid UShort Egész UInteger Hosszú ULong
Short Rövid Rövid Rövid Rövid Egész Egész Hosszú Hosszú Hosszú
UShort Egész Egész UShort Egész UShort Egész UInteger Hosszú ULong
Integer Egész Egész Egész Egész Egész Egész Hosszú Hosszú Hosszú
UInteger Hosszú Hosszú UInteger Hosszú UInteger Hosszú UInteger Hosszú ULong
Long Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú
ULong Hosszú Hosszú ULong Hosszú ULong Hosszú ULong Hosszú ULong

Ha az \ operátor egyik operandusa Decimális, Egy vagy Dupla, a Visual Basic megkísérli hosszúra konvertálni a művelet előtt, és az eredmény adattípusa .Long

Relációs és bitenkénti összehasonlítások

A relációs művelet eredmény adattípusa (=, , , <>, <=) >=mindig Booleanlogikai adattípus. <> Ugyanez igaz az operandusokon (And, AndAlso, , OrNot, , OrElse) Xorvégzett logikai műveletekre Boolean is.

A bitenkénti logikai művelet eredmény adattípusa az operandusok adattípusától függ. Vegye figyelembe, hogy AndAlsoOrElse a csak a Boolean, és a Visual Basic az egyes operandusokat szükség Boolean szerint átalakítja a művelet végrehajtása előtt.

=, <>, <, ><= és >= Operátorok

Ha mindkét operandus azBoolean, a Visual Basic kevesebbnek tekinti FalseTrue a műveletet. Ha numerikus típust hasonlítunk össze egy Stringszámmal, a Visual Basic megpróbálja átalakítani a String művelet előttire Double . Egy Char vagy Date operandus csak egy másik, azonos adattípusú operandussal hasonlítható össze. Az eredmény adattípusa mindig Boolean.

Bitenkénti nem operátor

Az alábbi táblázat a bitenkénti Not operátor eredményadattípusát mutatja be.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Not Logikai SByte Bájt Rövid UShort Egész UInteger Hosszú ULong

Ha az operandus Decimal, Singlevagy Doublea StringVisual Basic megpróbálja átalakítani Long a művelet előttre, és az eredmény adattípusa .Long

Bitenkénti És, Or és Xor operátorok

Az alábbi táblázat a bitenkénti és OrXor az operátorok eredményadattípusát Andmutatja be. Vegye figyelembe, hogy ez a táblázat szimmetrikus; az operandus adattípusok adott kombinációja esetén az eredmény adattípusa az operandusok sorrendjétől függetlenül megegyezik.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Logikai SByte Rövid Rövid Egész Egész Hosszú Hosszú Hosszú
SByte SByte SByte Rövid Rövid Egész Egész Hosszú Hosszú Hosszú
Byte Rövid Rövid Bájt Rövid UShort Egész UInteger Hosszú ULong
Short Rövid Rövid Rövid Rövid Egész Egész Hosszú Hosszú Hosszú
UShort Egész Egész UShort Egész UShort Egész UInteger Hosszú ULong
Integer Egész Egész Egész Egész Egész Egész Hosszú Hosszú Hosszú
UInteger Hosszú Hosszú UInteger Hosszú UInteger Hosszú UInteger Hosszú ULong
Long Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú Hosszú
ULong Hosszú Hosszú ULong Hosszú ULong Hosszú ULong Hosszú ULong

Ha egy operandus DecimalSingle, , Doublevagy String, Visual Basic megkísérli átalakítani Long azt a művelet előtt, és az eredmény adattípusa megegyezik azzal, mintha az operandus már lett Longvolna.

Egyéb operátorok

Az & operátor csak az operandusok összefűzéhez String van definiálva. A Visual Basic szükség String szerint átalakítja az egyes operandusokat a művelet előttre, és az eredmény adattípusa mindig Stringaz . Az operátor szempontjából az & összes átalakítás String szélesedőnek minősül, még akkor is, ha Option Strict az On.

Az Is és IsNot az operátorok esetében mindkét operandusnak referenciatípusúnak kell lennie. A TypeOf...Is kifejezés megköveteli, hogy az első operandus referenciatípusú legyen, a második operandus pedig egy adattípus neve legyen. Ezekben az esetekben az eredmény adattípusa .Boolean

Az Like operátor csak az operandusok mintaegyeztetéséhez String van definiálva. A Visual Basic megpróbálja szükség szerint String átalakítani az egyes operandusokat a művelet előttre. Az eredmény adattípusa mindig Boolean.

Lásd még