vb中为什么定义了全局变量以后就不一样了?
dimaasInterger--------------------------------------PrivateSubTimer1_Timer()a=a+1prin...
dim a as Interger
--------------------------------------
Private Sub Timer1_Timer()
a=a+1
print a
End sub
不定义就输出1 1 1 1 1 1……
定义了输出1 2 3 4 5 6 7……
这是为什么? 展开
--------------------------------------
Private Sub Timer1_Timer()
a=a+1
print a
End sub
不定义就输出1 1 1 1 1 1……
定义了输出1 2 3 4 5 6 7……
这是为什么? 展开
展开全部
Timer1_Timer 相当于一个大的Do循环,每隔若干时间就自动执行一次。
不定义a,那么每次执行到第一步 a = a + 1 的时候,系统会重新定义变量a,且a的初始值始终为0(或者说为空),那么a = a + 1 就始终为1。
其实这跟全局不全局没有关系,建议题主养成良好的编程习惯,在模块头加 Option Explicit 避免这类bug,强制声明所有变量。
不定义a,那么每次执行到第一步 a = a + 1 的时候,系统会重新定义变量a,且a的初始值始终为0(或者说为空),那么a = a + 1 就始终为1。
其实这跟全局不全局没有关系,建议题主养成良好的编程习惯,在模块头加 Option Explicit 避免这类bug,强制声明所有变量。
更多追问追答
追问
这个……我才学了一个多星期。那个Option Explicit 有什么作用?不太懂啊……
追答
强制声明所有变量
展开全部
所谓全局变量就是 在程序运行期间,它的值都将被保存。
而局部变量,则是 所在过程结束后,这个变量的值将被释放,下次在进入该过程,会重新初始化。
而局部变量,则是 所在过程结束后,这个变量的值将被释放,下次在进入该过程,会重新初始化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不定义全局时它等于在事件中定义,所以每次就等于每次定义,定义一次等于0,a=a+1始终是0+1
全局定义后a=a+1,等于每次事件触发都加1
全局定义后a=a+1,等于每次事件触发都加1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你不定义为全局变量的的话,它的作用域仅在Private Sub Timer1_Timer()中,程序每次进入Private Sub Timer1_Timer()中之后都要将a初始化0,然后再加1,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询