Currently, the problem is due to the implicit conversion in the IF expression to VBScript (Classic ASP), which does not do the implicit conversion in the same way when dealing with a variable or literal. Can someone explain this behavior to me why VBScript acts this way?
Here is an example of what I mean:
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
Which operators:
Long variable = String variable: Not equal
Long constant = String variable: Not equal
Long constant = Long variable: Equals
Long variable = String literal: Equal
Long constant = String literal: Equal
Which is pretty confusing o_O
source share