社区
VB基础类
帖子详情
一个关于">"和"<"的有趣问题
yokel
2004-08-04 11:16:32
i="1"
j=1
msgbox j=i '返回False,比较时进行了类型转换
是不是将i的值转成相应ascii码再比较呢,于是
i="1"
j=100000
msgbox j<i '还是返回False!!!!若msgbox i>j,则返回true
所以根本不是将i的值转成相应ascii码再比较,到底怎么比较的呢?
...全文
242
18
打赏
收藏
一个关于">"和"<"的有趣问题
i="1" j=1 msgbox j=i '返回False,比较时进行了类型转换 是不是将i的值转成相应ascii码再比较呢,于是 i="1" j=100000 msgbox jj,则返回true 所以根本不是将i的值转成相应ascii码再比较,到底怎么比较的呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
warlord
2004-08-10
打赏
举报
回复
3.
i="3"
j=4
msgbox j>i '结果 false;
4.
i = "3"
j = "4"
MsgBox j>i '结果 true
asc("3")=51
asc(3)=51
warlord
2004-08-10
打赏
举报
回复
我认为是这样,当字符和数字运算时,VB会把数字型的字符自动转为数字:
1.
i="3"
j=4
msgbox j+i '结果=7
2.
i="3"
j="4"
msgbox j+i '结果=43
落伍者
2004-08-06
打赏
举报
回复
看看这个,第一次发表,写的不好http://blog.csdn.net/ljc_zy/archive/2004/08/06/67488.aspx
落伍者
2004-08-06
打赏
举报
回复
终于给 楼主找到一个正确答案原来在<运算符有个规定
“一个 Variant 表达式是数值而另一个是字符串 数值表达式小于字符串表达式。 ”
见Msdn
比较运算符
用来比较表达式。
语法
result = expression1 comparisonoperator expression2
result = object1 Is object2
result = string Like pattern
比较运算符具有以下几个部分:
部分 描述
result 必需的;任何数值变量。
expression 必需的;任何表达式。
comparisonoperator 必需的;任何比较运算符。
object 必需的;任何对象名称。
string 必需的;任何字符串表达式。
pattern 必需的;任何字符串表达式或字符的范围。
说明
下列表格中有一系列比较运算符以及判定 result 是 True、False 还是 Null 的条件:
运算符 True if False if Null if
<(小于) expression1 < expression2 expression1 >= expression2 expression1 or expression2 = Null
<=(小于或等于) expression1 <= expression2 expression1 > expression2 expression1 or expression2 = Null
>(大于) expression1 > expression2 expression1 <= expression2 expression1 or expression2 = Null
>=(大于或等于) expression1 >= expression2 expression1 < expression2 expression1 or expression2 = Null
=(等于) expression1 = expression2 expression1 <> expression2 expression1 or expression2 = Null
<>(不等于) expression1 <> expression2 expression1 = expression2 expression1 or expression2 = Null
注意 Is 和 Like 运算符有特定的比较功能,它们不同於表格中的运算符。
在比较两个表达式的时候可能难以确定将要比较的表达式是数字还是字符串。下列表格将说明如何比较表达式,或说明当其中一个表达式不是 Variant 时,如何获得比较的结果。
如果 则
两个表达式都是数值数据类型 (Byte、Boolean、Integer、Long、Single、Double、Date、Currency 或Decimal) 进行数值比较。
两个表达式都是 String 进行字符串比较
一个表达式是数值数据类型而另一个是数字 Variant、或可以为一数字 进行数值比较。
一个表达式是数值数据类型而另一个是不能转换成数字的字符串 Variant 产生类型不匹配的错误。
一个表达式是 String,而另一个是除了 Null 以外的任何 Variant 进行字符串比较。
一个表达式是 Empty 而另一个是数值数据类型 进行数值比较,使用 0 作为 Empty 表达式。
一个表达式是 Empty 而另一个是 String 进行字符串比较,使用长度为零的字符串 ("") 作为 Empty 表达式。
如果 expression1 和 expression2 都是 Variant 表达式, 则它们的基本类型决定了比较方式。下列表格说明如何比较表达式,或指出通过比较得到的结果,此结果取决于 Variant 的基本类型:
如果 则
两个 Variant 表达式都是数值 进行数值比较。
两个 Variant 表达式都是字符串 进行字符串比较。
一个 Variant 表达式是数值而另一个是字符串 数值表达式小于字符串表达式。
一个 Variant 表达式是 Empty 而另一个是数值 进行数值比较,使用 0 作为 Empty 表达式。
一个 Variant 表达式是 Empty 而另一个是字符串 进行字符串比较,使用长度为零的字符串 ("") 作为 Empty 表达式。
两个 Variant 表达式都是 Empty 表达式相等。
当一个 Single 与一个 Double 作比较时,Double 会进行舍入处理而与此 Single 有相同的精确度。
如果一个 Currency 与一个 Single 或 Double 进行比较,则 Single 或 Double 转换成一个 Currency。与此相似,当一个 Decimal 要与一个 Single 或 Double 进行比较时,Single 或 Double 会转换成一个 Decimal。对于 Currency,任何小于 .0001 的小数将被舍弃,对于 Decimal,任何小于 1E-28 的小数将被舍弃,或者可能产生溢出错误。舍弃这样的小数部分会使原来不相等的两个数值经过比较后相等。
vbman2003
2004-08-06
打赏
举报
回复
Dim i, j
i = "a"
j = 9999999
MsgBox i > j
返回的也是 True
flyingscv
2004-08-06
打赏
举报
回复
还没大侠现身啊,再顶一下
liujingxiong
2004-08-06
打赏
举报
回复
不好意思,看错了。
lovebeethoven
2004-08-06
打赏
举报
回复
Dim aa
Dim bb
aa = "1"
bb = 1000000
MsgBox aa > bb
我试的结果是 真
yokel
2004-08-06
打赏
举报
回复
To liujingxiong(北极熊)
兄弟搞错了吧,两个都是1呀,下面代码返回True
i = "2"
j = 3000000
MsgBox j < i
liujingxiong
2004-08-06
打赏
举报
回复
如果j不指明类型,那么和String的i来比较的时候也会转换为String,
因为asc(i)=asc("l")=108,asc(j)=asc("1")=49,所以j<i
yokel
2004-08-06
打赏
举报
回复
to csdnchenxu(天堂剑)
Dim i As String
Dim j As Long
i = "1"
j = 1000000
MsgBox j < i '当然是False
但不指明类型
i = "1"
j = 1000000
MsgBox j < i '返回true
我指的情况当然是不指明数据类型的情况下呀,这是为什么,谁能解释一下
csdnchenxu
2004-08-04
打赏
举报
回复
楼主是不是自己看错了啊
我的机器上是正确的啊
测试代码:
Private Sub Form_Load()
Dim i As String
Dim j As Long
i = "1"
j = 1000000
MsgBox j < i
End Sub
j<i时是false
j>i时是ture
flyingscv
2004-08-04
打赏
举报
回复
奇怪
helanshan
2004-08-04
打赏
举报
回复
定义成Long型也是返回False。除非定义成String型,两个比较相等。
starsoulxp
2004-08-04
打赏
举报
回复
应该定义成Long型就返回True了
bluesky23
2004-08-04
打赏
举报
回复
你定义j是什么类型的?
如果是integer类型的,它最大只能表示32768
定义成Long型试试。
yokel
2004-08-04
打赏
举报
回复
写错了,后一段是
i="1"
j=100000
msgbox j>i '还是返回False!!!!若msgbox j<i,则返回true
所以根本不是将i的值转成相应ascii码再比较,到底怎么比较的呢?
vbman2003
2004-08-04
打赏
举报
回复
只要i是字符串,i>j都返回true
route53recoveryreadiness-jvm-0.16.2-beta.jar
route53recoveryreadiness-jvm-0.16.2-beta.jar
基于Python和C混合编程的海康威视网络摄像头视频流获取与处理系统-Ubuntu环境下的海康SDK集成-视频流解析与接口封装-动态链接库构建与Python调用-用于实时监控和.zip
tomcat基于Python和C混合编程的海康威视网络摄像头视频流获取与处理系统_Ubuntu环境下的海康SDK集成_视频流解析与接口封装_动态链接库构建与Python调用_用于实时监控和.zip
电商商城 小程序电商商城系统 PC商城 H5商城 APP商城 Java商城 O2O商城 跨境商城 SAAS架构
【源码预览】:https://renmaiwang.cn/s/r334w (最新版、最全版本)电商商城 小程序电商商城系统 PC商城 H5商城 APP商城 Java商城 O2O商城 跨境商城 SAAS架构
hapi-fhir-android-6.4.4.jar
hapi-fhir-android-6.4.4.jar
qldbsession-jvm-1.0.39-javadoc.jar
qldbsession-jvm-1.0.39-javadoc.jar
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章