Private Sub Command1_Click()
Form1.AutoRedraw = True ' 使得屏幕可以显示字符
Dim m%, n%
n = 3: m = 4
F (n + m): Print m, n
Print
F (m): Print m, n
Print
F (n): Print m, n
Print
F (5): Print m, n
Print
End Sub
Public Sub F(n%)
n = 3 * n + 4
End Sub
Private Sub Command2_Click()
Form1.AutoRedraw = True ' 使得屏幕可以显示字符
Dim m%, n%
n = 3: m = 4
F n + m: Print m, n
Print
F m: Print m, n
Print
F n: Print m, n
Print
F 5: Print m, n
Print
End Sub
command1输出:
4 3
4 3
4 3
4 3
command2输出:
4 3
16 3
16 13
16 13
同学提供的答案是:
4 3
16 3
16 3
16 3
完全不懂怎么回事,求解释!
VB子过程调用
答案:2 悬赏:70 手机版
解决时间 2021-02-26 12:06
- 提问者网友:杀生予夺
- 2021-02-25 13:16
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-02-25 13:22
Sub F(n%)中nj是传地址的。
传地址时过程中的变量会在调用的过程(f())里被改变并带回原过程。
传值时过程中的变量不会被调用的过程改变。
以上题中:
调用过程时参数加括号就强制转换成传值了。所以结果与不加括号是不一样的。
建议反复学习传地址,与值部分的基础知识。
你要想得到你同学的结果如下:
Private Sub Command3_Click()
Form1.AutoRedraw = True ' 使得屏幕可以显示字符
Dim m%, n%
n = 3: m = 4
F n + m: Print m, n
Print
F m: Print m, n
Print
F (n): Print m, n
Print
F m + 5: Print m, n
Print
End Sub
传地址时过程中的变量会在调用的过程(f())里被改变并带回原过程。
传值时过程中的变量不会被调用的过程改变。
以上题中:
调用过程时参数加括号就强制转换成传值了。所以结果与不加括号是不一样的。
建议反复学习传地址,与值部分的基础知识。
你要想得到你同学的结果如下:
Private Sub Command3_Click()
Form1.AutoRedraw = True ' 使得屏幕可以显示字符
Dim m%, n%
n = 3: m = 4
F n + m: Print m, n
F m: Print m, n
F (n): Print m, n
F m + 5: Print m, n
End Sub
全部回答
- 1楼网友:傲气稳了全场
- 2021-02-25 14:40
实际是打印了,打印出来的是空的所以你看不出来。
原因在于你打印的这个i不是bb过程里的i,那个i只归bb所称所有,出了子过程就不存在了。
而你打印的那个i只是当作你在command1_click里声明的一个变体型变量(因为你没有要求强制申明变量,vb就当作是一个变量来处理了),你没有给它赋值过,所以打不出来什么。你在所有代码前面加option explicit看看会怎样?option explicit会强制你声明变量
option explicit
private sub command1_click()
dim c as integer, e as integer
c = 36
call bb(c)
print i
end sub
public sub bb(d as integer)
dim i as integer
i = d
end sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯