vb中关于 as integer的问题 高分求高手~

来源:百度知道 编辑:UC知道 时间:2024/09/21 15:42:21
输入代码
Public i As Integer
Function fnp$(n)
For i = 1 To n
Let y$ = y$ + "!"
Next i
Let fnp$ = y$
End Function
Private Sub Form_click()
For i = 1 To 9
a$ = fnp$(i)
Print a$
Next i
End Sub
运行后显示 print出:
!
!!!
而不是:
!
!!
!!!
但当把“Public i As Integer”注释掉后就显示:
!
!!
!!!
类型的不同如何造成结果的差异?!
也就是说两者相互影响的结果是使某些结果不输出而某些结果输出吗?并且好像对于“!”的累加并没有停止啊!
实际上两次完整的结果是:
!
!!!
!!!!!
!!!!!!!
!!!!!!!!!

!
!!
!!!
!!!!
!!!!!
!!!!!!
!!!!!!!
!!!!!!!!
!!!!!!!!!

你的程序以公有两个过程,两个中都用到了变量i作为循环变量。
如果找你在过程外声明一个公共变量,就会使两者互相影响。
这不是类型的差别,而是“变量的作用范围”问题。
注释掉这一声明,两个过程的变量就被看成独立的,一是一个而是两个。
对比程序:
Public i As Integer, i1 As Integer
Function fnp$(n)
For i1 = 1 To n
Let y$ = y$ + "!"
Next i1
Let fnp$ = y$
End Function
Private Sub Form_click()
For i = 1 To 9
A$ = fnp$(i)
Print A$
Next i
End Sub
你就会看出并不是类型问题。

答案补充:
我当然知道结果,因为我运行了的!
不是不输出,也不是累加停止了。这些不是我说的!
既然你知道累加没有停止,你为什么就没有看到累加的过程是跳跃性的?

是变量作用域的不同。
窗体级变量和过程级变量的区别。
和数值型的数据类型没有关系。

与数据类型无关..而是你定义了个全局变量.