作者fumizuki (小狮子)
看板Visual_Basic
标题Re: [VB6 ] 计算机
时间Sat Jun 11 17:42:41 2005
※ 引述《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