社区
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码再比较,到底怎么比较的呢?
...全文
239
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
HTML学习
[toc] HTML学习网站 只做我的第
一个
网页
制作我的第
一个
网
web前端网页制作课作业:校园科技节活动网站 (纯HTML+CSS布局制作)
🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介:
一个
热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员
有趣
的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 Echarts大屏展示大数据平台可视化(150套) 】 🔖 HTML+CSS+JS实例代码: 【🗂️HTML+CSS+JS实例代码 (炫酷特效网页代码) 继续更新
Sun工作站技术文档
Sun工作站技术文档
华胜天成
目
Vue3.2 新特性详解——<script setup> 和 <style> v-bind
Vue3.2 新特性详解——< script setup> 和 < style> v-bind 1. 前言 2. < script setup> `新特性 2.1 基本语法 2.2 顶层绑定将自动暴露给模板 2.2.1 基本使用 2.2.2 原理探究 2.3 组件的使用 2.3.1 自动的组件名推断 2.3.2 普通组件的使用 2.3.3 动态组件 2.3.4 递归组件 2.3.5 命名空间组件 2.4 props 的使用——defineProp
如何使用HTML5新增的标签来构建语义化的页面结构
随着HTML5的推出,Web开发者们迎来了许多新的标签,这些标签不仅增强了网页的语义化表达能力,还提高了网页的可读性和可访问性。本文将详细介绍如何使用HTML5的新标签来构建语义化的页面结构,并通过多个示例来演示这些标签的实际应用。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得
有趣
的内容和知识,也可以畅所欲言、分享您的想法和见解。:虽然大多数现代浏览器都支持HTML5的新标签,但是为了兼容老版本浏览器,可以使用Polyfill或JavaScript来模拟这些新标签的行为。
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章