ネットで話題の「8÷2(2+2)=?」 ←答えが1と16の二大派に分かれているそうです。

数学 | 天文、宇宙3,165閲覧xmlns="http://www.w3.org/2000/svg">50

1人が共感しています

ベストアンサー

35

35人がナイス!しています

ThanksImg質問者からのお礼コメント

そもそも問題式に瑕疵があったんですね。 勉強になりました。 他の皆様もご回答誠に有難うございました。

お礼日時:5/8 21:18

その他の回答(6件)

10

結果論とすれば「文法エラー(記載ルール不統一)」で終わる話ですが…。 コンピュータ言語のC言語の演算子の場合(たいていのプログラミング言語において同じですが、C言語では演算子の種類がやたら多い関係で)、演算子ごとに優先順位と結合規則というのが厳格に定められています。 乗算の演算子は*で、除算の演算子は/です。 a=8/2(2+2); は、文法エラー(※)となります。乗算を暗黙定義できないからです。 a=8/2*(2+2); では、aに16が格納されます。 最優先演算子は()という単項演算子で、括弧の中身の「2+2」部分が先に演算されます。結果、 a=8/2*4; と等価になります。 次の優先度を持つ演算子は、*と/で、優先度は同じ2項演算子で、結合規則は「→」です。【同じ優先度の演算子が並ぶ場合は、結合規則の順で演算される】ため、 a=(8/2)*4; と等価になります。結果、 a=4*4; となり、 a=16; となります。 最後の優先度を持つ演算子は、=という代入演算子で、結合規則は「←」である2項演算子です。 16という値をaに代入するという副作用がありますが、最終的に16という値を持つ式になります。 代入演算子で行われる「aに値を設定する」という副作用だけ期待されていて、結果としての16という値は捨てられます。 結合規則について余談を言うと、代入演算子という2項演算子の結合規則は「←」なので、 a=b=3; という式は、 a=(b=3); という順で演算されます。 b=3という演算は、bに3を代入した結果の3という値になるので、最終的にaにもbにも3が格納されます。 (※)エラー内容は「定数に対するアドレス解決ができない」という旨のエラーになります。これは多項演算子()は、左側の項に指定された関数に対して、右側の項の内容の引数を伴って呼び、その関数の演算結果を返すという演算を行うためです。 printf("%d",a); という文の()は演算子で、printfという名の関数の実体に対して、"%d"とaの値という2つの項を持って呼び出しを行います。 件の数式の 2(2+2); という部分がまさにこの書き方になっていて、多項演算子()として2という名の関数に2+2という計算結果を引数として呼び出そうとしていると解釈されます。ところが、2という名の関数は存在せず、関数としての実体も持たないので、エラーとなります。

10人がナイス!しています

7

×記号が省略されるけれど ÷記号が省略されずに残るということはルール違反なので まずルール違反の部分を直す。 8÷2×4 この答えは16になる。 という考え方もできます。 (これが正しい計算ルールだ、と言いたいのではなく 考え方を説明しているだけです、念のため) 中1で習う文字式のテストで a÷{b×(c+d)}を文字式のルールで表しなさい、 という問題が出た時に a÷b(c+d) なんて書いたら文句なしにバツです。 ÷(×記号を省略した文字式) という書き方が認められているのは 6ab÷3a=2b のような ÷(単項式) の形式だけです。 a÷b(c+d)、のような書き方は 教科書に書かれたルールの中で認められたことがないんです。 「計算ルールが定義されていないから問題不備」 が最も妥当な回答で、 「=1でも=16でも正解」はやや強引です。

7人がナイス!しています

2

昔、流行った「6÷2(1+2)」と同じタイプの未定義論議です。 数学や算数の問題ではなく、日本の普通教育(学習指導要領)で定められていない計算順序の話で、 不毛な主張の言い争いを起こすためのネタのようなものです。 「6÷2(1+2)」 https://dic.nicovideo.jp/a/6%C3%B72%281%2B2%29 http://q.hatena.ne.jp/1318755559 http://100-sai.com/?p=1571 なお、コンピュータや計算機のプログラムでは、省略した掛け算を強制的に追加して 8÷2×(2+2)としてから計算するとプログラミングがめんどくさくならないので、16と言う答えになることが多いです※。 例 https://ja.wolframalpha.com/input/?i=8%C3%B72%282%2B2%29 しかし、そのプログラミングは、あくまでそのプログラマーが独断と偏見で作成するため、 めんどくさいかどうかと数学や算数の定義の問題とは何の関係もありません。 ※省略した掛け算を優先すると言うプログラムを組めば答えは1になります。 https://ja.wolframalpha.com/input/?i=8%C3%B7a%282%2B2%29%2Ca%3D2

2人がナイス!しています

0

計算としては 8/2(2+2) 8/2(4) 8/8=1 じゃないかな? 16の回答は 8/2(2+2) 8/2*4 なぜかかっこを解放で 4*4=16 方程式カオスになりそう。