| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 400 人关注过本帖
标题:求此表达式的讲解!
只看楼主 加入收藏
kowen
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-12-29
收藏
 问题点数:0 回复次数:1 
求此表达式的讲解!
表达式如下:

Private Sub Form_Click()
Dim a(10) As Integer
a(1) = 10: a(2) = 15: a(3) = 5: a(4) = 13: a(5) = 20:
a(6) = 31: a(7) = 25: a(8) = 23: a(9) = 1: a(10) = 17

Text1.Text = sum(True, a)
Text2.Text = sum(False, a())
End Sub
Private Function sum(operate As Boolean, a() As Integer) As Long
Dim i As Integer
If operate Then

For i = LBound(a) To UBound(a)
sum = sum + a(i)
Next
Else
sum = 1
For i = LBound(a) To UBound(a)
sum = sum * a(i)
Next
End If
End Function


1.请帮我讲解一下Text1.Text = sum(True, a) 与 Text2.Text = sum(False, a()) 这两句代码中 (True, a) 与(False, a()) 的区别.
2.小弟不才,刚刚才学,For i = LBound(a) To UBound(a)这句也没有搞懂,还请哪位仁兄讲解,多谢!


搜索更多相关主题的帖子: 讲解 表达 
2006-12-29 16:04
小李寻欢
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-12-27
收藏
得分:0 
1、sum这个UDF是用来计算整形数组a的各个元素的和或积的(由operate形参决定,= True时求和,= False时求成绩),然后将计算的结果作为函数的返回值(VB函数的返回值必须通过其函数的签名带回)赋给文本框Text1或Text2的Text属性,由TextBox控件负责显示。而sum(True, a)与sum(False, a())在这个示例中并无本质上的区别(估计这是道试题吧?),仅仅是为了展示数组作为参数传递到函数/过程的两种不同的形式罢了(在VB中传递整个数组总是按址引用的——既数组的首址,函数的形参表也说明了这点)。若非要究其差别的话,前者可以在函数/过程体内改变数组的内容,而后者(带()进行传递的),则可防止这样的情况出现。
2、这个For循环自然是为了迭代整个数组了,LBound/UBound是分别测试数组的上(UBound)/下(LBound)标的。说心里话,就你贴出的代码而言sum这个函数是有缺陷的,因为默认情况下VB的数组下标是从0开始的,因此LBound的结果总是0,UBound则是10,所以数组实际存在11个元素,而a(0)永远等于0。因此,sum(False, a())的返回总是0。
2006-12-29 16:53
快速回复:求此表达式的讲解!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014985 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved