社区
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码再比较,到底怎么比较的呢?
...全文
302
18
打赏
收藏
一个关于">"和"<"的有趣问题
i="1" j=1 msgbox j=i '返回False,比较时进行了类型转换 是不是将i的值转成相应ascii码再比较呢,于是 i="1" j=100000 msgbox jj,则返回true 所以根本不是将i的值转成相应ascii码再比较,到底怎么比较的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
【CCF】
有趣
的数
本文介绍了
一个
有趣
的数学
问题
,即寻找特定条件下的
有趣
数的数量,并通过动态规划的方法给出了解决方案。文章详细解释了如何通过递推关系计算特定长度的
有趣
数的数量。
一个
有趣
的规划
问题
本文探讨了
一个
有趣
的运输
问题
:如何在特定条件下将尽可能多的薯片从菜鸟驿站运回家。通过制定有效的策略并使用Python实现算法,最终确定了最优解。
有趣
的跳跃
本文介绍了
一个
有趣
的
问题
:如何判断
一个
序列是否存在‘
有趣
的跳跃’。通过分析序列中相邻元素差的绝对值,使用排序和比较的方法,实现了一种算法来解决这个
问题
。文章提供了详细的代码示例和思路解释。
一个
与小球碰撞有关的
有趣
问题
本文探讨了
一个
有趣
的物理
问题
,涉及小球在光滑平面上与墙及另一小球进行完全弹性碰撞的情况。当大球质量是小球的10^2n倍时,碰撞次数显示出与圆周率π相关的模式。通过实验观察到,质量比为特定数值时,碰撞次数分别为3次、314次、3141次和31415次。文章提出了解释这一现象的初步思路,并鼓励读者探索更多解法。
有趣
的数
本文探讨了一种利用动态规划解决特定数学
问题
的方法——计算
有趣
数的数量。
有趣
数是指
一个
特殊的数字序列,其中只包含0、1、2、3这四个数字,并遵循特定的排列规则。文章详细解释了如何通过动态规划算法高效地计算n位
有趣
数的数量。
VB基础类
7,788
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章