VB关于TEMP的一段代码求解释

问题略多,求赐教
代码
Private Sub Command1_Click()
Dim str1 As String, str2 As String
str1 = InputBox("")
subf str1, str2
Print str2
End Sub
Sub subf(s1 As String, s2 As String)
Dim temp As String
Static i As Integer
i = i + 1
temp = Mid(s1, i, 1)
If temp <> "" Then subf s1, s2
s2 = s2 & temp
End Sub
输入abcdef后,显示为fedcba,temp在此处是怎么把6个临时变量同时存储的,为什么后面存储的的不会把之前存储的替换掉?在F8运行时,已经结束了sub过程,为什么
s2 = s2 & temp
End Sub
还会重复运行7次?
求赐教

很好理解,temp只在subf里存储,运行完了就没有了。有几位就运行几次,每次把最后一位取出放到S2里,最后显示S2而已。S1里没有变啊,你原来是abcdef,结束也是abcdef,而S2原来是空白的,每次从S1最后取出一位放进去,于是就倒过来了。最后显示出来而已。追问

怎么是取s1的最后一位呢,程序用的是mid函数,i是从1开始累加,依次取出的应该是a,b,c,d,e,f,当i累加到7时,执行s2 = s2 & temp,这时返回空字符串。(是不是把temp看做数组,到执行该语句时依次倒序取值?)

追答

先取第一位:
Static i As Integer '不重置
i = i + 1 '初始为0,+1后就是1
temp = Mid(s1, i, 1) ‘取第1位
If temp "" Then subf s1, s2 ‘如果不为空,继续取,一直取到最后时,才开始:
s2 = s2 & temp ‘将最后一位加上,然后一个个返回,于是就成了倒过来了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-14
temp没有同时存储6个临时变量,print str2显示得输出是s2变量存储的内容。之所以运行7次,是因为If temp <> "" Then subf s1, s2这句,这里调用了subf过程,只要temp不为空就调用一次追问

你说的这段我知道,我有疑惑的是对二楼的追问

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网