0

我一直在使用斯坦福视频作为学习 iOS 编程的工具。我对“-”操作有疑问。演练解释说,对于这部分代码,操作数的顺序必须正确。我不明白这段代码如何保证操作的顺序。这是在做什么?

else if ([operation isEqualToString:@"-"]) {
double subtrahend = [self popOperand];
result = [self popOperand] - subtrahend;

我得到了第一行代码,我不明白最后两行。如何将 double 放入 subtrahend 变量并将其设置为等于popOperand确保操作顺序然后从 subtrahend 中减去 subtrahend [self popOperand]

4

2 回答 2

0

他们所说的只是你需要确保在被减数之前弹出减数,因为它们放置在堆栈上的顺序,否则你会得到错误的结果。

简而言之,5 - 3!= 3 - 5

于 2012-10-06T15:59:37.510 回答
0

使用 NSLog 在每个中间步骤输出有用的消息,这里发生的事情应该很明显。在许多情况下有用的技术。

考虑这个问题的另一种方法是,你想从堆栈中的第二个东西中减去堆栈中的第一个东西。或者,如果您愿意,可以这样表达操作:

    result = - [self popOperand] + [self popOperand];

它可能只是工作,但当然这是假设最左边的popOperand首先被执行。

于 2012-12-09T22:22:31.723 回答