在文本框text1与text2中分别输入35与48,变量s与x分别为字符型与整型,试问以下赋值语句的执行结果是什么?s=text1.text + text2.text
x=text1.text + text2.text
s=text1.text & text2.text
x=text1.text & text2.text
s=val(text1.text) + text2.text
x=val(text1.text) + text2.text
s=val(text1.text) + text2.text
x=val(text1.text) + text2.text我在vb里运行了一下,结果和我设想的不一样,请大家给我一个正确的答案
首先我认为 text1.text 这所取的值应为字符串常量.字符串常量赋给整型变量应为类型不匹配.
val(text1.text)+ text2.text   数值常量+字符串常量吗?谢谢!

解决方案 »

  1.   

    这是因为VB对Variant类型处理的比较特殊,它总是尽可能地将两个不同的类型转换为相同的类型,然后比较,所以它会把保存的字符数据和数字数据的Variant变量都转换为数字型
      

  2.   

    s=val(text1.text) + text2.text应该相当于s=Str(val(text1)+text2)而str函数完整的应该是Function Str(StrToCover AS Variant) 就是说里面的那个数值类型是variant这样作的用处估计就是增加cpu的占用率了
      

  3.   

    textbox有一毛病,不分字符型与数值型。
    即使我赋值时用了STR()或VAL()也没用。
    有时这点挺气人。
      

  4.   

    text1.text  输入的值比如是48 这是什么类型?
      

  5.   

    //s=text1.text + text2.text
    x=text1.text + text2.text
    s=text1.text & text2.text
    x=text1.text & text2.text这里面的“+” 和 “&”的作用相同,都是连接字串的,返回值当然是字串,如果定义的返回值的变量类型不是字串,则根据连接后的字串进行类型转换,这个工作由vb自身来完成,所以程序可以正常运行,不过,你要注意,这不是一个好的习惯至于:
    //val(text1.text) + text2.text
    由于使用了val,vb会认为要进行数学运算,如果text2.text不能转化为数值,就会抛出一个错误,当然,你的程序中同样存在一个由vb完成的类型转换问题
      

  6.   

    text1.text的默認類型好像是variant
      

  7.   

    "5"   +   "6"  =   11
    "5"   &   "6"  =   "56"
    "s"   +   "6"  =   "s6"
    "5"   &   "s"  =  "5s"
      

  8.   

    //"5" + "6" = 11
    "5" & "6" = "56""5" + "6" = "56" or 56,但不会=11
    "5" & "6" = "56"