为了账号安全,请及时绑定邮箱和手机立即绑定

求解释,为什么在vb中这个i不用str(i)?

求解释,为什么在vb中这个i不用str(i)?

喵喵时光机 2021-12-02 19:15:27
Function Isprime(n%) As BooleanDim i%Isprime = TrueFor i = 2 To n - 1If n Mod i = 0 ThenIsprime = FalseExit FunctionEnd IfNext iEnd FunctionPrivate Sub Command1_Click()Dim a%, b%, i%a = Val(Text1.Text)b = Val(Text2.Text)Text4.Text = ""For i = a To bIf Isprime(i) Then Text4.Text = Text4.Text & i & " "Next iEnd SubText4.Text = Text4.Text & i & " "中的i为什么不是str(i)
查看完整描述

1 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

VB会自动把i转换为字符串的。如果用了Str()反而是画蛇添足,因为它会在正数的前面添加一个空格。
在多数情况下,VB都会自动转换数据为合适的类型,比如
"123" + 123 = 246
"123" + "123" = "123123"
"123" & 123 = "123123"

但是,有时候这种自动转换有可能并不符合程序设计者的需求,所以从严谨的角度出发,仍然建议尽可能对数据类型进行显式转换,比如:
Val("123") + 123 = 246
"123" & CStr(123) = "123123" '这里建议尽量用CStr()不用Str(),因为前者不会在正数前加空格

补充说一句:凡是表达式中用&对变量进行连接的,则除对象变量外的所有变量类型VB都会先转换为字符串再进行连接,因此像Text4.Text & i & " "中的i就完全没必要主动去转换类型了;但是,如果不是用&连接,而是用的+号,比如Text4.Text + i + " ",这个就要注意了,根据Text4值的类型,VB有可能会把第一个+号当作加法运算符来看,所以这种情况下就要尽量对i进行转换了,即Text4.Text + CStr(i) + " "。另外,居于上述理由,在进行字符串连接时,建议尽量用&不要用+!

查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信