一个很简单的赋值问题,我不太明白!

showtime84 2005-12-28 09:25:57
在文本框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 数值常量+字符串常量吗?

谢谢!
...全文
201 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2005-12-29
  • 打赏
  • 举报
回复
//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完成的类型转换问题
northwolves 2005-12-29
  • 打赏
  • 举报
回复
variant
showtime84 2005-12-29
  • 打赏
  • 举报
回复
text1.text 输入的值比如是48 这是什么类型?
feiyun0112 2005-12-29
  • 打赏
  • 举报
回复
vb会自动转换类型,但是最好不要这样用
rainstormmaster 2005-12-29
  • 打赏
  • 举报
回复
//"5" + "6" = 11
"5" & "6" = "56"

"5" + "6" = "56" or 56,但不会=11
"5" & "6" = "56"
zou19820704 2005-12-29
  • 打赏
  • 举报
回复
"5" + "6" = 11
"5" & "6" = "56"
"s" + "6" = "s6"
"5" & "s" = "5s"
DengXingJie 2005-12-29
  • 打赏
  • 举报
回复
text1.text的默認類型好像是variant
electricperi 2005-12-28
  • 打赏
  • 举报
回复
textbox有一毛病,不分字符型与数值型。
即使我赋值时用了STR()或VAL()也没用。
有时这点挺气人。
sparkwong 2005-12-28
  • 打赏
  • 举报
回复
s=val(text1.text) + text2.text应该相当于s=Str(val(text1)+text2)

而str函数完整的应该是Function Str(StrToCover AS Variant)

就是说里面的那个数值类型是variant

这样作的用处估计就是增加cpu的占用率了
sparkwong 2005-12-28
  • 打赏
  • 举报
回复
这是因为VB对Variant类型处理的比较特殊,它总是尽可能地将两个不同的类型转换为相同的类型,然后比较,所以它会把保存的字符数据和数字数据的Variant变量都转换为数字型

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧