Re: [VB6 ] 計算機
※ 引述《TrueFeeling (昨日之死)》之銘言:
: ※ 引述《fumizuki (小獅子)》之銘言:
: : 正確程式碼是這樣...
: : Public Function Eval(s As String)
: :        ElseIf op1 = "*" Then
: :           p = p - 1: GoSub SplitProc: Eval = Eval(op1) * Eval(op2): GoTo EndProc
: :        ElseIf op1 = "/" Then
: :           p = p - 1: GoSub SplitProc: Eval = Eval(op1) / Eval(op2): GoTo EndProc
: :        ElseIf op1 = "^" Then
: Then後面沒寫任何東西也可以喔@@?!!
: 那如果程式跑到這裡的話,接下它會怎麼跑?
就是什麼也不做的意思,繼續下一個條件...
: : 為什麼
: :      ElseIf op1 = "^" Then
: :         p = p - 1: GoSub SplitProc: Eval = Eval(op1) / Eval(op2): GoTo EndProc
:                                                       ^^^
:                                                        ↑
:                                                      這是打錯嗎?
:                                                      (應該是^號吧)
我複製的時候沒改好...
: : 會錯誤,我算了一下,
: : 是因為 ^ 的優先等級的問題...
: : 因為 ^ 這個運算子的優先等級比 * 、 / 還要高
: : 所以優先順序應該是 ^ / * - +
: : 程式要反過來變成 + - * / ^
: 嗯嗯,我也是這麼想
: : ElseIf op1 = "^" 的下面那行全部消掉, p = p - 1: Gosub SplitProc 根本也沒意義
: : ^ 這個運算子是要留在最後處理的,所以在 ElseIf 這裡就不做處理
: 但是不做處理的時候,程式不是會在這裡斷掉嗎
同上
: : 如果真的打成這樣...
: :      ElseIf op1 = "^" Then
: :         p = p - 1: GoSub SplitProc: Eval = Eval(op1) / Eval(op2): GoTo EndProc
:                                                        ^^^
:                                                        ↑
:                                                      這是打錯嗎?
:                                                      (應該是^號吧)
同上
: : 會變成
: : 5 ^ (-3 * 2)
: 嗯,我是過,結果答案似乎也不是這樣
: 例如我輸入2^-1*2
: 答案是0.5@@!!
: (不知道電腦怎麼算的!!)
你怎麼打的?
? Eval("2^-1*2")
 1
? 2^-1*2
 1
沒有問題呀...
: : 正確的結果應該是
: : (5 ^ -3) * 2
--
VB 程式設計   倉木麻衣       PTT 星爺板     行列輸入法
======================================================
Visual_Basic  MaiKuraki      Stephen        Array
--
※ 發信站: 批踢踢實業坊(ptt.cc) 
◆ From: 210.58.156.43
討論串 (同標題文章)
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章