社区
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码再比较,到底怎么比较的呢?
...全文
325
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】
有趣
的数
CCF
有趣
的数
一个
有趣
的规划
问题
最近看到了
一个
有趣
的小
问题
,整理了一些自己的思考,对此做
一个
简单的总结。
问题
如下: 我在某宝买了100袋乐事大波浪薯片,薯片到了菜鸟驿站,菜鸟驿站距离我家500米,我要把薯片全部拿回家。但是,我每次最多只能拿50袋,并且我嘴馋,只要手上有薯片,每走10米就要吃掉一袋。请问,我最多能把几袋薯片拿回家? 假设: 1.我中途可以把薯片放在地上,不会被人拿走 2.我可以一次取一部分的快递 3.为简化模型,考虑离散情况,我每次至少走10米,一包薯片必须吃完 思路: 最后剩下的薯片最多>吃掉的薯片最少>带
有趣
的跳跃
有趣
的跳跃 描述
一个
长度为n(n>0)的序列中存在“
有趣
的跳跃”当前仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。例如,1 4 2 3存在“
有趣
的跳跃”,因为差的绝对值分别为3,2,1。当然,任何只包含单个元素的序列一定存在“
有趣
的跳跃”。你需要写
一个
程序判定给定序列是否存在“
有趣
的跳跃”。 输入 一行,第
一个
数是n(0 < n < 3000),为序列长度,接下来有...
有趣
的数
问题
描述 试题编号: 201312-4 试题名称:
有趣
的数 时间限制: 1.0s 内存限制: 256.0MB
问题
描述:
问题
描述 我们把
一个
数称为
有趣
的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。 3. 最高位数字不为0。 因此,符合我们定义的最小的
有趣
的数是2013。除此以外,4位的
有趣
的数还有两个:2031和2301。 请计算恰好有n位的
有趣
的数的个数。由于答案可
如何做
一个
有趣
的人
##如何做
一个
有趣
的人 ##今天在
一个
很喜欢的博主那里看到了一篇文章叫做如何做
一个
有趣
的人,他的技术贴里有这样一篇文章,并且写的我还很喜欢,实是少见,便摘录了下来。文章中有一些可以让你静下心来的东西,还加了作者自己的一些观点;作为
一个
无趣的人觉得很是受用,记于2021年2月5日。附上地址:https://blog.csdn.net/iblade/article/details/80632399 1、不善表达是能力不行(储备太少),不是性格内向——请不要自欺欺人咯——这句话至少对于自己完全没毛病。 ...
VB基础类
7,788
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章