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

Function Isprime(n%) As Boolean
Dim i%
Isprime = True
For i = 2 To n - 1
If n Mod i = 0 Then
Isprime = False
Exit Function
End If
Next i
End Function

Private Sub Command1_Click()
Dim a%, b%, i%
a = Val(Text1.Text)
b = Val(Text2.Text)
Text4.Text = ""
For i = a To b
If Isprime(i) Then Text4.Text = Text4.Text & i & " "
Next i
End Sub

Text4.Text = Text4.Text & i & " "中的i为什么不是str(i)

喵喵时光机
浏览 206回答 1
1回答

四季花海

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) + " "。另外,居于上述理由,在进行字符串连接时,建议尽量用&不要用+!
打开App,查看更多内容
随时随地看视频慕课网APP