作者sueadolph (人..只剩下不信任)
看板Visual_Basic
标题Re: [vb2008] 请教一题呼叫函数程式题
时间Sat Jun 26 18:59:52 2010
用推文太难回了
只好暂用板面回了~
※ 引述《stator (别急着吃棉花糖)》之铭言:
: Private Sub Form_Activate( )
: DIM X as Integer
: X=3
: Call F1(X)
: Debug.Print(X)
: End Sub
: Sub F1( ByRef X As Integer )
^^^^^
这边用了 ByRef
: Call T2 ( X=X+X , X , X )
^^^^^
x=x+x ,这边变成判断句了哦!。 (A>B A=B的问题)
也就是变成只有布林的 true 跟 false
但这二个又可以转换成 -1 跟 0
所以传到第一个t2时,是传false 经由 Integer 转换成 0
(其实这边我也觉得怪怪的...为什麽我的印象中true=1才对? 还是那是C?)
(刚试了一下 VB2008 true=-1 VBA(excel) 也是true=-1)
: End Sub
: Sub T2(ByRef A As Integer ,ByVal B As Integer , ByRef C As Integer )
^^^^^ 0 ^^^^^ 3 ^^^^^ 3
A = A + 1 (0+1 所以a=1
B = B + 2 (3+2 b=5
C = A + B * C (1+ 5*3 所以C变成16
但C是Byref所以会影响F1的X值,同样地
F1的X值,也是BYREF,所以也会影响 Activate时的X值
最後debug就变成 16了
(建议可以变成各个副程式 是byref 还是byval
: End Sub
: 执行结果为16,请问16要怎麽算呢??
: 一开始呼叫F1函数,再呼叫T2,其中X=X+X会传什麽值过去给T2呢?谢谢各位前辈
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.118.197.87
※ 编辑: sueadolph 来自: 140.118.197.87 (06/26 19:13)
1F:推 apple:原来是判断句喔...引数传递的说明档没有提到这个... 06/27 06:44
2F:推 horngsh:是不是判断句, 要自己作实验, 自己亲证才是真的. 06/27 07:44
3F:→ stator:谢谢s大~写题目写到这种还是第一次,没遇过判断句的 06/27 10:28
4F:推 stator:推回来,谢谢 06/27 11:28
5F:推 wwon:谢谢,这个我也想不通,现在才知道原来是判断句!(/‵Д′) 06/28 04:34