vb子过程方面请教啊~~

[复制链接]
查看11 | 回复2 | 2011-7-23 19:09:52 | 显示全部楼层 |阅读模式
Sub k()
a = Val(Text1)
a = a + 2
Print a
End Sub
Private Sub Command1_Click()
Call k
End Sub
——————————————————————
Sub k()
a = a + 2
Print a
End Sub
Private Sub Command1_Click()
a = Val(Text1)
Call k
End Sub
上面两个程序的区别在哪啊??
最好能逐行解释下
假如输入是5,两个输出的值分别是多少呢??
求高手解惑啊~~

回复

使用道具 举报

千问 | 2011-7-23 19:09:52 | 显示全部楼层
……突然发现Pascal语言真好,可能比VB在过程/函数的变量作用域问题上方便处理一些……不扯题外话了。还是先批判一下这两段代码……1、变量不定义;2、缩进呢?你提的问题在很多VB的书上讲得非常不明确(百度知道上这种问题满天乱飞的)——变量作用域。第一段代码等效于:Private Sub Command1_Click()
dim a as variant
a = Val(Text1)
a = a + 2
Print aEnd Sub因为一单击,什么也没做,所有工作都交给子过程k了。于是打出了a=Val(text1.text)+2第二段代码,VB会解释成这个样子:Sub k(...
回复

使用道具 举报

千问 | 2011-7-23 19:09:52 | 显示全部楼层
首先,这不是好的编程习惯,没有定义变量。可能是学校的题目才会这样误导学生,郁闷!如果输入是5,第一段程序输出的是7;而第二段程序输出的是2原因:第一段程序中,a是在过程k中赋值的,所以a运算前的值是5,运算后+2,等于7第二段程序,Command1_Click()中的a与k中的a不是一回事,没有定义变量,变量的默认值是0,Command1_C...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行