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……
这是为什么?
展开
 我来答
然后去远足
2013-08-08 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2450万
展开全部
Timer1_Timer 相当于一个大的Do循环,每隔若干时间就自动执行一次。
不定义a,那么每次执行到第一步 a = a + 1 的时候,系统会重新定义变量a,且a的初始值始终为0(或者说为空),那么a = a + 1 就始终为1。
其实这跟全局不全局没有关系,建议题主养成良好的编程习惯,在模块头加 Option Explicit 避免这类bug,强制声明所有变量。
更多追问追答
追问
这个……我才学了一个多星期。那个Option Explicit 有什么作用?不太懂啊……
追答
强制声明所有变量
crazy0qwer
2013-08-08 · TA获得超过3301个赞
知道大有可为答主
回答量:4020
采纳率:71%
帮助的人:1333万
展开全部
所谓全局变量就是 在程序运行期间,它的值都将被保存。
而局部变量,则是 所在过程结束后,这个变量的值将被释放,下次在进入该过程,会重新初始化。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xyc5932
2013-08-08 · TA获得超过231个赞
知道小有建树答主
回答量:775
采纳率:0%
帮助的人:494万
展开全部
不定义全局时它等于在事件中定义,所以每次就等于每次定义,定义一次等于0,a=a+1始终是0+1
全局定义后a=a+1,等于每次事件触发都加1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fang852545786
2013-08-08 · TA获得超过131个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:155万
展开全部
因为你不定义为全局变量的的话,它的作用域仅在Private Sub Timer1_Timer()中,程序每次进入Private Sub Timer1_Timer()中之后都要将a初始化0,然后再加1,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式