VB........

我首先问一个比较笨的问题PrivatexAsIntegerDimzAsInteger有什么区别然后我最后算出来的xyz结果分别是60,30,30。所以也不知道哪错了麻烦仔... 我首先问一个比较笨的问题
Private x As Integer Dim z As Integer 有什么区别
然后我最后算出来的xyz结果分别是60,30,30。所以也不知道哪错了
麻烦仔细讲一下过程 谢谢了
展开
 我来答
wwwkcl
2014-02-03 · TA获得超过197个赞
知道答主
回答量:348
采纳率:0%
帮助的人:152万
展开全部
这道题的初衷就是为了让你了解声明的区别

首先,我们来区分本例中出现的声明类型:

1) Dim:过程级变量,可以在模块中任意位置声明,所声明的变量在该声明所在的过程中有效。如果出现在通用声明段,则在该模块中的所有过程中有效

2) Private:模块级变量,只能出现在模块的通用声明段中,所声明的变量在该模块中有效。

3) Static:静态声明,和dim一样,属于过程级变量,不同之处在于,在过程内使用Static声明的变量在过程结束之后会被保存下来,而Dim声明的变量则不会。

接下来我们解析一下这道题:

首先要注意的是,X变量是在通用声明段中使用 Private 语句声明的,是模块级变量,所以一会儿当过程结束后X变量将会被保存

然后进入过程,你会发现过程内还有两个变量被声明了,他们是Y和Z,其中Y是使用Static声明的,而Z则是使用Dim声明的,根据上面的讲解,Static是静态变量,过程结束后将会被保存,而Dim是过程级变量,过程结束后将失效。

最后,让我们来分步执行上述代码吧。

载入程序时,X被声明为模块级变量。
第一次点击command1按钮之后:
y被声明为静态变量,z被声明为过程级变量
n=10
z=n+z 结果为z=10
y=y+z 结果为y=10
x=x+z 结果为x=10

再次点击command1按钮:
y被声明为静态变量,z被声明为过程级变量
n=10
z=n+z 因为上次过程结束时Z变量失效,本次过程中的Z为再次声明的新变量,所以结果为z=10
y=y+z 因为Y是静态变量,所以上一个过程结束时被保存下来了,所以结果为y=10+10=20
x=x+z 因为X为模块级变量,是储存在过程之外的,所以结果为x=10+10=20

看懂了第二次点击的所执行的过程,那么第三次就简单了,是一样的道理了
n=10
z=n+z 因为上次过程结束时Z变量失效,本次过程中的Z为再次声明的新变量,所以结果为z=10
y=y+z 因为Y是静态变量,所以上一个过程结束时被保存下来了,所以结果为y=20+10=30
x=x+z 因为X为模块级变量,是储存在过程之外的,所以结果为x=20+10=30

所以答案是C。
zzp249
2014-02-03 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:167
采纳率:100%
帮助的人:84.9万
展开全部
应该是C,不会是60,30,30。Private 值会保留,X不会被初始化(不清零),三次 Dim 都使 z 清零了。
追问
不是static会清零吗
追答
Static是静态变量,过程结束后 y 值将会被保存。
本题与定义 x 语句的位置有关,放在点击command1按钮前就不会使 x 清零了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式