Implizite VBScript-Konvertierung in einer IF-Anweisung, die sich von der Variablen in Literale unterscheidet?

Derzeit tritt ein Problem auf, das auf die implizite Konvertierung in einer IF-Anweisung in VBScript (Classic ASP) zurückzuführen ist, bei der die implizite Konvertierung beim Umgang mit einer Variablen oder einem Literal nicht auf die gleiche Weise erfolgt. Kann mir jemand dieses Verhalten erklären, warum verhält sich VBScript so?

Hier ist ein Beispiel dessen, was ich meine:

Const c_test = 3
Dim iId : iId = 3
Dim iTestStr : iTestStr = "3"

If iId = iTestStr Then
    Response.Write("Long variable = String variable : Equal")
Else
    Response.Write("Long variable = String variable : Not Equal")
End If

Response.Write("<br/>")

If c_test = iTestStr Then
    Response.Write("Long constant = String variable : Equal")
Else
    Response.Write("Long constant = String variable : Not Equal")
End If

Response.Write("<br/>")

If c_test = iId Then
    Response.Write("Long constant = Long variable : Equal")
Else
    Response.Write("Long constant = Long variable : Not Equal")
End If

Response.Write("<br/>")

If iId = "3" Then
    Response.Write("Long variable = String literal : Equal")
Else
    Response.Write("Long variable = String literal : Not Equal")
End If

Response.Write("<br/>")

If c_test = "3" Then
    Response.Write("Long constant = String literal : Equal")
Else
    Response.Write("Long constant = String literal : Not Equal")
End If

Welche Ausgänge:

Lange Variable = Zeichenfolgenvariable: Nicht gleich

Lange Konstante = Zeichenfolgenvariable: Nicht gleich

Lange Konstante = Lange Variable: Gleich

Lange Variable = String-Literal: Gleich

Lange Konstante = String-Literal: Gleich

Welches ist ziemlich verwirrend o_O

Antworten auf die Frage(2)

Ihre Antwort auf die Frage