以下の接尾表記のどちらが正しく、中置合計1 + 2 + 3 + 4を表しますか?
-
27-09-2019 - |
質問
私は中置ツーのpostfixツー中置コンバータをテストし、不確実性のいくつかの種類を見つけています。例えば、簡単な中置和
1 + 2 + 3 + 4
が後置いずれかに変換することができる
1 2 + 3 + 4 +
等しい優先順位の演算子が蓄積されていないと仮定します。彼らは、その後であれば、私は取得
1 2 3 4 + + +
一方、以下のすべてのpostfixの式は、最初の合計に変換することができます。
1 2 + 3 + 4 +
1 2 + 3 4 + +
1 2 3 4 + + +
これらすべての後置表現は正しいですか?
UPDATE1
あなたは、このようなコンバータを作りたい場合、、どのフォームにあなたは選びますか?私はテストのための1つを選択する必要があります。
解決
あなたは余分な制約を定義する必要があります。
数学的には、あなたの後置表現はすべて同じです。しかし、コンピュータの整数の加算であるため、オーバーフローの本当に可換ではありません。
bはC dで1 2 3 4を交換し、オーバーフローの可能性を検討します。ほとんどのプログラミング言語は、そのa + b + c + d
が左から右にそれa b + c + d +
が唯一の正しい翻訳したものですので、評価されなければならない定義します。
。すなわち、(古い)Cコンパイラの場合であった。
他のヒント
うん、すべて正しいです。彼らは、以下の括弧中置式に対応します:
((1 + 2) + 3) + 4
(1 + 2) + (3 + 4)
1 + (2 + (3 + 4))
+
が混乱している - 。それはそう実際には、すべての結果はのの正しい
は、他の事業者と+
を置き換える考えてみます。1 a 2 b 3 c 4
ここでは、正しい結果、左結合の演算子のために、
1 2 a 3 b 4 c
だから、あなたのケースでは、私が期待する1 2 + 3 + 4 +
所属していません StackOverflow