当然返回True,你这里的语句ddd=""是判断字符串ddd是否为空字符串。如果是空字符串
就会返回True,那么在msgbox以及vbscript中会显示True。

解决方案 »

  1.   

    ""是空字符串,空指没有赋值(用IsEmpty判断为True)
      

  2.   

    但是存在的问题就是ddd是未初始化的变量,应该是个empty值
    而“”是空字符串而不是一个empty值,难道empty=not empty??
      

  3.   

    你这样写相当于
    Dim b as Boolean,ddd as string
    ddd=""
    b=(ddd="") 'True
    msgbox b
      

  4.   

    你的意思是
    当执行msgbox ddd=""的时候,自动有了一步对ddd由variant型到字符型的转换工作?
    另外ddd=""是赋值而不是判断?
    怎么决定=号是赋值还是判断呢?
    谢谢
      

  5.   

    你要知道任何一个表达式都是有值的,ddd=""也是一个表达式,叫赋值表达式。它的作用是给变量赋值,它的值是true。也就是说如果你写ddd=""表示让变量ddd的值为空串,当你要用msgbox或if取这个表达式的值的时候,就是真。明白?
      

  6.   

    这是一个很基础但很难回答的问题,我做了试验,证明你这种说法是错误的
    binghuodao(冰火岛)兄你刚才说写ddd=""表示让变量ddd的值为空串,那就是赋给ddd为空串。那么如果我写ddd="aaa",同样也可以理解为表示让变量ddd的值为aaa,ddd="aaa"也是一个赋值表达式,它的作用是给变量赋值,但这时msgbox ddd="aaa"的结果不是true而是false了还有,如果ddd=""表示赋值的话,那么当这行程序执行完之后是不是ddd就应该是string型了呢?我在后面用VarType函数做了下测试,结果为0(vbEmpty)。说明这时ddd还是未初始化,不存在赋值的过程。如果执行ddd=""那vartype的结果应该是8(vbstring)以上是我实验结果
      

  7.   

    msgbox ddd="aaa"
    里面的等于并不是赋值,而是判断,判断变量ddd是否等于"aaa"
    如果不等于,结果就是在msgbox中显示False。看看下面的代码:
    Private Sub Command1_Click()
        Dim x
        x = 1 = 2
        Debug.Print x
    End Sub
    你就明白了