i="1"
j=1
msgbox j=i '返回False,比较时进行了类型转换
是不是将i的值转成相应ascii码再比较呢,于是
i="1"
j=100000
msgbox j<i  '还是返回False!!!!若msgbox i>j,则返回true
所以根本不是将i的值转成相应ascii码再比较,到底怎么比较的呢?

解决方案 »

  1.   

    写错了,后一段是
    i="1"
    j=100000
    msgbox j>i  '还是返回False!!!!若msgbox j<i,则返回true
    所以根本不是将i的值转成相应ascii码再比较,到底怎么比较的呢?
      

  2.   

    你定义j是什么类型的?
    如果是integer类型的,它最大只能表示32768
    定义成Long型试试。
      

  3.   

    应该定义成Long型就返回True了
      

  4.   

    定义成Long型也是返回False。除非定义成String型,两个比较相等。
      

  5.   

    楼主是不是自己看错了啊
    我的机器上是正确的啊
    测试代码:
    Private Sub Form_Load()
      Dim i As String
      
      Dim j As Long
      
      i = "1"
      j = 1000000
      
      MsgBox j < i
    End Subj<i时是false
    j>i时是ture
      

  6.   

    只要i是字符串,i>j都返回true
      

  7.   

    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
    我指的情况当然是不指明数据类型的情况下呀,这是为什么,谁能解释一下
      

  8.   

    如果j不指明类型,那么和String的i来比较的时候也会转换为String,
    因为asc(i)=asc("l")=108,asc(j)=asc("1")=49,所以j<i
      

  9.   

    To liujingxiong(北极熊)
      兄弟搞错了吧,两个都是1呀,下面代码返回True
      i = "2"
      j = 3000000
      MsgBox j < i
      

  10.   

    Dim aa
    Dim bb
    aa = "1"
    bb = 1000000
    MsgBox aa > bb
    我试的结果是 真
      

  11.   

    Dim i, j
    i = "a"
    j = 9999999
    MsgBox i > j返回的也是 True
      

  12.   

    终于给 楼主找到一个正确答案原来在<运算符有个规定
    “一个 Variant 表达式是数值而另一个是字符串 数值表达式小于字符串表达式。 ”
    见Msdn 
    比较运算符
          用来比较表达式。语法result = expression1 comparisonoperator expression2result = object1 Is object2result = 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 的小数将被舍弃,或者可能产生溢出错误。舍弃这样的小数部分会使原来不相等的两个数值经过比较后相等。
      

  13.   

    看看这个,第一次发表,写的不好http://blog.csdn.net/ljc_zy/archive/2004/08/06/67488.aspx
      

  14.   

    我认为是这样,当字符和数字运算时,VB会把数字型的字符自动转为数字:
    1.
    i="3"
    j=4
    msgbox j+i  '结果=72.
    i="3"
    j="4"
    msgbox j+i  '结果=43
      

  15.   

    3.
    i="3"
    j=4
    msgbox j>i  '结果 false;4.
    i = "3"
    j = "4"
    MsgBox j>i '结果 trueasc("3")=51
    asc(3)=51