¿Conversión implícita de VBScript en la instrucción IF diferente de variable a literales?

Actualmente tenemos un problema debido a la conversión implícita en una declaración IF en VBScript (ASP clásico) que no realiza la conversión implícita de la misma manera cuando se trata de una variable o un literal. ¿Alguien puede explicarme este comportamiento? ¿Por qué VBScript actúa de esta manera?

Aquí hay una muestra de lo que quiero decir:

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

Qué resultados:

Variable larga = variable de cadena: no igual

Constante larga = variable de cadena: no igual

Constante larga = variable larga: igual

Variable larga = Cadena literal: igual

Constante larga = literal de cadena: igual

Lo cual es bastante confuso o_O

Respuestas a la pregunta(2)

Su respuesta a la pregunta