看板 Visual_Basic 關於我們 聯絡資訊
用推文太難回了 只好暫用板面回了~ ※ 引述《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