一个VB2005的面试题的理解

前不久,在某人的博客上看到这样的一道题。

Public Sub Test()

Dim i as Integer

 

For i=0 To 3

Dim A as Integer

A=A+1

Next

 

Debug.Print A

End Sub

 

问最后显示的A的值是多少?

答案是出乎意料的,显示是4

那人从分析内核的角度来分析这个问题。有兴趣的读者可以去看看。

 

我的理解是,那一句Dim A as Integer虽然在循环内,但其实只之行了一次。

我们把循环拆开,看看会有什么反应。

 

Public Sub Test()

 

 

Dim A as Integer

A=A+1

 

 

 

Dim A as Integer

A=A+1

 

 

 

Debug.Print A

End Sub

 

看看结果,立马会提示你“重复定义”

 

因此,总结一下。变量定义不管是否在循环内,在编译的时候都是只定义一次。

一个猜想:一个函数内的所有的变量定义都会在编译的时候提前至函数的开始处。

 

从这个角度来看,这道面试题的结果就不难理解了。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值