"1"如何大于50?

Ban*_*var 1 vbscript type-conversion asp-classic

我对以下内容感到困惑,希望我能学到一些东西.当我运行以下代码时:

<%
Response.Write "ss = ""1""<br/>"
ss = "1"
Response.Write "ii = 50<br/>"
ii = 50
Response.Write "ss >= ii "
If ss >= ii Then Response.Write "True?" Else Response.Write "False"
Response.Write "<br/>""1"" >= 50 "
If "1" >= 50 Then Response.Write "True" Else Response.Write "False"
%>
Run Code Online (Sandbox Code Playgroud)

它写道:

ss = "1"
ii = 50
ss >= ii True?
"1" >= 50 False
Run Code Online (Sandbox Code Playgroud)

MSDN说 如果操作数是一个数字和一个字符串比较是字符串被转换为双精度并执行数字比较.如果无法将String转换为Double,则抛出InvalidCastException.

我正在使用ASP版本5.8,内部版本号18525.

我不需要一个解决方法,因为我有一个,但我想知道是否有一个原因,因为它是一个容易犯的错误.

编辑:选择正确的答案有一个注释,其中包含2个比较之间差异细节的进一步链接.

TZH*_*ZHX 6

您正在查看.NET的文档,同时使用VBScript(不是.NET语言).引用VBScript语言引用,然后在将字符串与数字进行比较时,

数值表达式小于字符串表达式.

资源

你的第二个if评估的原因False是因为VBScript在比较中对变量和文字的处理方式不同.因为你有一个文字数字,文字串你最初的预期正在转换.