1. ホーム
  2. java

[解決済み] 4 + 20 / (3 - 1) * 2 を 4 + (20) / ((3 - 1) * 2) と解釈するのはなぜ間違いなのでしょうか?

2022-01-30 12:14:45

質問

Javaを勉強していると、次のような表現に出くわします。 4 + 20 / (3 - 1) * 2 .

Eclipseでは、この式は24と評価されます。 つまり、次のように解釈されます。 4 + ((20 / (3 - 1)) * 2) .

4 + 20 / (3 - 1) * 2 と解釈するのはなぜ間違っているのでしょうか? 4 + (20) / ((3 - 1) * 2) となり、9になるのでは?

ありがとうございました。

アップデイト

私の質問をより具体的に説明すると、数学的には、私の側に誤解や誤認がない限り、4 + 20 / (3 - 1) * 2 は、この論文から学んだように曖昧です。 https://math.berkeley.edu/~gbergman/misc/numbers/ord_ops.html カリフォルニア大学バークレー校の教授であるジョージ・バーグマン氏によるものです。と解釈することもできる。 4 + ((20 / (3 - 1)) * 2) または 4 + (20) / ((3 - 1) * 2) .

しかし、Javaでは 4 + ((20 / (3 - 1)) * 2) の解釈は正しいように見えますが 4 + (20) / ((3 - 1) * 2) の解釈は間違っているように見える。どちらの解釈でも、まず括弧の中のものが計算され、次に掛け算と割り算が行われ、最後に足し算と引き算が行われます。ただ、正しい解釈では割り算が先に行われ、間違った解釈では掛け算が先に行われるという違いがあります。

そこで質問なのですが、Javaにおいて、ある解釈を正しく、他の解釈を間違っているとする重要な要因は何でしょうか。

ありがとうございます。

解決方法は?

演算順序とは、最も内側の括弧を最初に評価し、次に左から右へ乗算と除算を行い、次に左から右へ加算と減算を行うことです。ここでは、左から右への原則が重要です。この演算順序は数学の標準であり、Javaは(ほとんどの言語と同様に)数学の標準に従います。 演算順序