0

iOS プログラミングを学習するためのツールとして、スタンフォードのビデオを使用してきました。「-」操作について質問があります。ウォークスルーでは、コードのこの部分ではオペランドの順序が正しい必要があることを説明しています。このコードが操作の順序を保証する方法がわかりません。これは何をしているのですか?

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

コード芽の最初の行を取得しますが、最後の 2 行がわかりません。double を subtrahend 変数に入れ、それを等しい値に設定するpopOperandことは、操作の順序を保証してから subtrahend を減算することと同じ[self popOperand]ですか?

4

2 に答える 2

0

彼らが言っているのは、スタックに配置される順序のために、被減数の前に必ず減数をポップする必要があるということです。そうしないと、間違った結果が得られます。

簡単に言えば、5 - 3!=3 - 5です。

于 2012-10-06T15:59:37.510 に答える
0

NSLog を使用して、各中間ステップで有用なメッセージを出力します。ここで何が起こっているかは明らかです。多くの場面で役立つテクニック。

これについて考える別の方法は、スタックの最初のものをスタックの 2 番目のものから減算したいということです。または、必要に応じて、操作を次のように表現します。

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

うまくいくかもしれませんが、もちろん、これは一番左の popOperand が最初に実行されることを前提としています。

于 2012-12-09T22:22:31.723 に答える