问题 单项选择题

有如下过程代码:
Sub var_dim()
Static numa As Integer
Dim numb As Integer
numa=numa+2:numb=numb+1
Print numa; numb
End Sub
连续三次调用var_dim过程,第三次调用时的输出是

A.2 1

B.2 3

C.6 1

D.6 3

答案

参考答案:C

解析: 本题考查静态变量和动态变量的区别。题目中变量numa用static申明,是静态变量,numb是动态变量。
过程内的动态变量在程序运行到变量所在的过程时,系统为变量分配存储空间,并进行变量的初始化,当该过程结束时,释放变量所占用的存储空间。所以本题中第三次调用var_dim过程时,变量numb的值与前两次调用var_dim过程没关系,首先分配存储空间并初始化为0,在执行numb=numb+1后输出其值,结果为1。
过程内的静态变量,只在第一次调用该过程时,系统为该静态变量分配存储空间,并进行变量的初始化,当该过程结束时,不释放变量所占用的存储空间,下次再调用该过程时,静态变量的值依然存在。所以本题第三次调用var_dim过程时,numa是在第二次调用var_dim过程后numa的值的基础上再加2,而第二次调用时是在第一次调用var_dim过程后的numa的值的基础上加2,numa的初始值为0,调用3次var_dim过程后结果为6。所以本题输出的结果为6 1,故本题答案为C。

选择题
单项选择题