2016-07-20 17 views
1

Was ist der Wert der unten in VbscriptVerwendung von + Operator in differents Situationen in Vbscript

1)x=1+"1" 2)x="1"+"1" 3)x=1+"mulla" Hinweis: In allen drei oben genannten Fällen, die ich erste Variable entweder als String oder Integer verwende und die zweite auf wie immer als Zeichenfolge.

Fall 1: Acting als numerischer und Auto Umwandlung in numerische während des Betriebs

enter code here 
y=inputbox("Enter a numeric value","") Rem I am using 1 as input 
x=1 
msgbox x+y Rem value is 2 
msgbox x*y Rem value is 1 

Fall 2: Acting als String und keine Umwandlung in numerische während des Betriebs ausfällt es

enter code here 
y=inputbox("Enter a numeric value","") Rem I am using 1 as input 
x=1 
if y= x then 
    msgbox "pass" 
else 
    msgbox "fail" 
end if 

Fall 3 : Als String und explizite Umwandlung in numerisch im laufenden Betrieb besteht

Ich brauche einen logischen Grund für die verschiedenen Verhaltensweisen. aber in einer anderen Sprache ist es gerade nach vorn und wird als

Antwort

2

stimme ich mit dem meisten was @thomas-inzinahas said aber die OP has asked for a more detailed explanation so hier geht.

Als @thomas-inzina Punkt mit + ist gefährlich, wenn Sie mit Strings arbeiten und kann zu Mehrdeutigkeiten führen, je nachdem, wie Sie verschiedene Werte kombinieren.

VBScript ist eine Skriptsprache, und im Gegensatz zu ihm großen Brüder ist (VB, VBA und VB.Net) es ist typenlos nur(einige Diskussionen über VB und VBA auch ohne Typ sein zu können, aber das ist ein anderes Thema ganz) bedeutet, dass es einen Datentyp verwendet, der als Variant bekannt ist. Variant kann andere Datentypen wie Integer, String, DateTime etc. ableiten, wo die Mehrdeutigkeit entstehen kann.Diese

bedeutet, dass Sie ein unerwartetes Verhalten bekommen können, wenn + anstelle von & als + ist nicht nur ein Verkettungsoperator, wenn sie mit Strings verwendet werden, sondern auch ein Additionsoperator, wenn sie mit numerischen Datentypen arbeiten.

Dim x: x = 1 
Dim y: y = "1" 

WScript.Echo x + y 

Ausgang:

2 
Dim x: x = "1" 
Dim y: y = "1" 

WScript.Echo x + y 

Ausgang:

11 
Dim x: x = 1 
Dim y: y = 1 

WScript.Echo x + y 

Ausgang:

2 
Dim x: x = 1 
Dim y: y = "a" 

WScript.Echo x + y 

Ausgang:

Microsoft VBScript runtime error (4, 5) : Type mismatch: '[string: "a"]' 
5

Referenz erwartet funktionieren:Addition Operator (+) (VBScript)

Obwohl Sie auch den Operator + verwenden können zwei Zeichenketten verketten, sollten Sie den & Operator für Verkettung verwenden zu beseitigen Mehrdeutigkeit. Wenn Sie den Operator + verwenden, können Sie möglicherweise nicht feststellen, ob eine Addition oder eine Verkettung von Zeichenfolgen auftritt. Der Typ der Ausdrücke bestimmt das Verhalten des Operators + auf folgende Weise:

Wenn beide Ausdrücke numerisch sind, ist das Ergebnis die Addition beider Zahlen.

Wenn beide Ausdrücke Zeichenfolgen sind, ist das Ergebnis die Verkettung beider Zeichenfolgen. Wenn ein Ausdruck numerisch und der andere ein String ist, wird Error: type mismatch geworfen.

Wenn Sie mit gemischten Datentypen arbeiten, ist es am besten, Ihre Variablen in einen gemeinsamen Datentyp zu konvertieren, indem Sie Type Conversion Function verwenden.

+0

Danke für die Antwort. Aber gibt es irgendeine logische Konnektivität, warum es nicht in der 3 Fall – mulla

+0

Ich meine Antwort zu aktualisieren verkettet. Die kurze Antwort lautet, dass VBScript eine Zahl nicht mit dem Operator '+' in eine Zeichenfolge umwandelt. –

+0

Ich verstehe Ihre Antwort ... Lassen Sie mich es so sagen .... im ersten Ausdruck, wenn ich TypeName ("1") verwende, wird es als Strings geben. Entsprechend Ihrer Antwort (Wenn ein Ausdruck numerisch ist und der andere eine Zeichenkette ist, wird ein Fehler: type mismatch geworfen.) Mit der case 1 sollte es einen Fehler werfen. Es fügt hinzu und ich brauche eine logische Schlussfolgerung zu demselben. Es ist nicht eine grundlegende Ebene der Frage, wie andere denken. Wie wir wissen, ist es Addition. Aber muss herausfinden, warum es hinzufügt. Lassen Sie mich meine Frage mit einigen 3 oder 4 Fällen in der Frage aktualisieren, um dieses darzustellen ... – mulla