Неявное преобразование VBScript в операторе IF отличается от переменной к литералу?

В настоящее время у нас есть проблема из-за неявного преобразования в операторе IF в VBScript (Classic ASP), которое не выполняет неявное преобразование таким же образом при работе с переменной или литералом. Может кто-нибудь объяснить мне это поведение, почему VBScript действует таким образом?

Вот пример того, что я имею в виду:

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

Какие выходы:

Длинная переменная = строковая переменная: не равно

Длинная константа = строковая переменная: не равно

Длинная постоянная = Длинная переменная: равно

Длинная переменная = строковый литерал: равно

Длинная константа = строковый литерал: равно

Что довольно запутанно, о_О

Ответы на вопрос(2)

Ваш ответ на вопрос