无暇红宝石代码:vb中过程变量和静态变量的区别和计算

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 16:37:16
private sub command1_click()
static x as integer
cls
for i 1 to 2
y=y+x
x=x+2
next
printx,y
end sub
程序运行后,连续3次单击command1按扭后,窗体上显示的是
a 4 2 b12 18 c 12 30 d4 6
答案说x=2+2+2+2+2+2+2+2+2+2+2+2=12
y=8+10=18
请问这是怎么回事啊?
上面循环中的i在这里怎么看啊?请懂的人务必帮忙!十分感谢
那怎么看出y是静态变量x是过程变量呢,
编码中为什么要加个cls啊

过程变量,变量的值在离开定义该变量的过程后不再保存
静态变量,变更的值在离开定义该变量的过程后再次进入该过程时仍能保存上一次的值。
上面的代码中有几处错误:for i=1 to 2,少了个=号;print x,y,print和x之间有一个空格。
第一次执行该过程(单击Command按钮)
i=1,y=0+0=0,x=0+2=2
i=2,y=0+2=2,x=2+2=4
第二次执行该过程
i=1,y=0+4=4,x=4+2=6,注意此时X的初值为4而不是0,而Y的初值仍为0
i=2,y=4+6=10,x=6+2=8,
第三次执行时
i=1,y=0+8=8,x=8+2=10
i=2,y=8+10=18,x=10+2=12

答案为B
静态变量只要程序没有结束,其生存期就不结束,应用到这个程序,也就是一次单击时间结束后,静态变量x得值不释放,仍然保留,而y是局部变量,一次过程结束其生存期就结束,应用到这个程序,也就是一次单击时间结束后,其被释放,接受重新定义

这样仔细算来就出出正确结果的,不要象答案那样找规律,在学习语言初步,一定要按照原理仔细得一行一行读程序,才能养成好习惯

除范围之外,变量还有存活期,在这一期间变量能够保持它们的值。在应用程序的存活期内一直保持模块级变量和公用变量的值。但是,对于 Dim 声明的局部变量以及声明局部变量的过程,仅当过程在执行时这些局部变量才存在。通常,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。但可将局部变量定义成静态的,从而保留变量的值。在过程内部用 Static 关键字声明一个或多个变量,其用法和 Dim 语句完全一样

上面二位仁兄说得很好,原理和方法都很清晰,我都不知道怎么补充了