
一道VB试题
OptionExplicitPrivateFunctionf(aAsInteger)AsIntegerDimbAsIntegerStaticcAsIntegerb=b+1...
Option Explicit
Private Function f(a As Integer) As Integer
Dim b As Integer
Static c As Integer
b = b + 1
c = c + 1
f = a + b + c
End Function
Private Sub Command1_Click()
Dim a As Integer, i As Integer
a = 2
For i = 1 To 3
Print f(a)
Next i
End Sub
完全不明白运行结果为什么是 4、5、6
请大家指教,谢谢! 展开
Private Function f(a As Integer) As Integer
Dim b As Integer
Static c As Integer
b = b + 1
c = c + 1
f = a + b + c
End Function
Private Sub Command1_Click()
Dim a As Integer, i As Integer
a = 2
For i = 1 To 3
Print f(a)
Next i
End Sub
完全不明白运行结果为什么是 4、5、6
请大家指教,谢谢! 展开
4个回答
展开全部
你的问题可能是没理解 局部变量里用dim 和 static语句声明变量的区别
1, static:声明的为静态变量,在第一次调用它所在的过程时创建和初始化,当过程结束时,静态变量的存储空间仍然保留,因此静态变量的值可以保持,并从上一次调用传递到下一次调用
2, dim: 每次调用过程时动态创建和初始化,当过程结束时,收回变量的存储空间,因此无法保留变量的值;
下面说下你的程序
由于
Dim b As Integer
Static c As Integer
因此每次调用函数时,b 的值为0(系统默认) c值为上次处理后的结果 每一次为0 第二次为1(也就是第一次处理后的结果,注意第二次处理后c的值为2) 第三次为2
下面我说下三次调用 a,b ,c值
次数 a b c 结果
1 2 1 1 4
2 2 1 2 5
3 2 1 3 6
1, static:声明的为静态变量,在第一次调用它所在的过程时创建和初始化,当过程结束时,静态变量的存储空间仍然保留,因此静态变量的值可以保持,并从上一次调用传递到下一次调用
2, dim: 每次调用过程时动态创建和初始化,当过程结束时,收回变量的存储空间,因此无法保留变量的值;
下面说下你的程序
由于
Dim b As Integer
Static c As Integer
因此每次调用函数时,b 的值为0(系统默认) c值为上次处理后的结果 每一次为0 第二次为1(也就是第一次处理后的结果,注意第二次处理后c的值为2) 第三次为2
下面我说下三次调用 a,b ,c值
次数 a b c 结果
1 2 1 1 4
2 2 1 2 5
3 2 1 3 6

2025-06-12 广告
六西格玛培训机构哪家好?找18年六西格玛管理咨询品牌(天行健管理咨询),在北京、上海、广州、深圳等开设过上1000门课程,老师都拥有驻厂实战经验,理论+实战更有保障,参加天行健培训的六西格玛培训,学员考证通过超过90%!...
点击进入详情页
本回答由天行健提供
展开全部
因为b和c为内部变量,没有赋初值,默认为0。因为c为Static,所以退出function后c的地址仍保留,即c的值不清空,所以在command1_click中调用f时,c的值每次增加1.
所以a的值在f中每次增加1,出现结果为4、5、6
所以a的值在f中每次增加1,出现结果为4、5、6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Static c As Integer
它是将c值存到内存中的,相当于全局变量一样,第一次调用时c=1,第二次c=2,第三次c=3,所以结果都+1
它是将c值存到内存中的,相当于全局变量一样,第一次调用时c=1,第二次c=2,第三次c=3,所以结果都+1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Print f(a)
显示 函数f 的返回值
函数f 在这。。 Private Function f(a As Integer) As Integer
Dim b As Integer
Static c As Integer
b c 的初始值为0 即b=0 c=0
i=1 时
function f(a) 里:
b = b + 1 ‘ b=1
c = c + 1 ’ c=1
f = a + b + c ‘ f=4
返回
所以 i=1时 f(a)=4
然后。。 被print出来。。
有必要说下Static 和 dim
Static只能在sub或function过程中使用,在退出sub或function过程后变量的值保留
dim 不保留
所以
i=2 时
function f(a) 里:
b = b + 1 ‘ b=0+1 b是dim声明的
c = c + 1 ’ c=1+1 static的
f = a + b + c ‘ f=5
应该说清楚了。。。。
显示 函数f 的返回值
函数f 在这。。 Private Function f(a As Integer) As Integer
Dim b As Integer
Static c As Integer
b c 的初始值为0 即b=0 c=0
i=1 时
function f(a) 里:
b = b + 1 ‘ b=1
c = c + 1 ’ c=1
f = a + b + c ‘ f=4
返回
所以 i=1时 f(a)=4
然后。。 被print出来。。
有必要说下Static 和 dim
Static只能在sub或function过程中使用,在退出sub或function过程后变量的值保留
dim 不保留
所以
i=2 时
function f(a) 里:
b = b + 1 ‘ b=0+1 b是dim声明的
c = c + 1 ’ c=1+1 static的
f = a + b + c ‘ f=5
应该说清楚了。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询