关于ASP数值间比较的问题

XIAOYUANLUOBO 2009-08-04 07:51:10
情况一:
<%
a="2"
c=100
if a>100 then
response.write "OK!"
else
response.write "OFF!"
END IF
%>
输出结果:OFF!

情况二:

<%
a="2"
c=100
if a>c then
response.write "OK!"
else
response.write "OFF!"
END IF
%>
输出结果:OK!

情况三:

<%
a="2"
c=100
if cint(a)>c then
response.write "OK!"
else
response.write "OFF!"
END IF
%>
输出结果:OFF!


问题:
为什么以上三种运行结果会不同呢。。还有cint()这个函数有哪些功能呢。。。
...全文
130 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzx99 2009-08-05
[Quote=引用 3 楼 number123456 的回复:]
如果a 的值是通过传参,request得到的话,就不保证一定会是数字了,
如果为字符的话,你使用INT就会报错,我决得还是在比较之前对这两个变量值去,
比如 a是否为空,是否为数字 ,如果都不是的话就提示
[/Quote]

我的做法是 不判断, 一律加空字符 &""
回复
sumjor 2009-08-05
[Quote=引用 1 楼 cpp2017 的回复:]
1.将a转换成int

2.将c转换成string

3.a显式转换成int

[/Quote]
这个解释是对的
回复
in0512 2009-08-05
要分清字符串和变量的写法

Cint 转换成整形
Cstr 转换成字符串
Clng 转换成常整数
Cbool 转换成布尔函数
Cdate 转换成日期函数
CSng 转换成单精度
CDbl 转换成双精度
回复
anbs01 2009-08-05
回复
number123456 2009-08-05
如果a 的值是通过传参,request得到的话,就不保证一定会是数字了,
如果为字符的话,你使用INT就会报错,我决得还是在比较之前对这两个变量值去判断,
比如 a是否为空,是否为数字 ,如果都不是的话就提示
回复
shaomingmark 2009-08-05
1楼说法正确。另外我补充一点

情况一:a>100 这个时候a根据100的类型,隐式的将a转换为int类型


情况三:将a强制转换为int


cint()强制转换为int类型
回复
toury 2009-08-05
别那么多情况了,一个就可以:
<%
a="2"
c=100
if a-c>0 then
response.write "OK!"
else
response.write "OFF!"
END IF
%>
回复
yooxee 2009-08-05
差不多2楼说的那样

比较时,必须是同类型

如果不是同类型,在比较时会转换类型,一般A和B比较,如果是变量和实例,那么变量的那个会转换为实例的类型,如果是变量和变量,那么右边的B会转换为左边的A所对应实例的类型,就这样。。。
回复
sherlock777 2009-08-05
帮顶
回复
cpp2017 2009-08-04
1.将a转换成int

2.将c转换成string

3.a显式转换成int
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告