作者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)
推 apple:原來是判斷句喔...引數傳遞的說明檔沒有提到這個... 06/27 06:44
推 horngsh:是不是判斷句, 要自己作實驗, 自己親證才是真的. 06/27 07:44
→ stator:謝謝s大~寫題目寫到這種還是第一次,沒遇過判斷句的 06/27 10:28
推 stator:推回來,謝謝 06/27 11:28
推 wwon:謝謝,這個我也想不通,現在才知道原來是判斷句!(/‵Д′) 06/28 04:34