2020.03.13
計算の優先順位
四則演算(+、-、×、÷)には計算の優先順位があるので、計算の順番を間違うと答えが変わります。
例1)10-3×2の場合、正しい計算結果は4です。(10-3×2 = 10-6 = 4) 例2)6×8-5×4の場合、計算結果は28です。(6×8-5×4 = 48-20 = 28)
この2つの演算子は、計算する順番に関係なく同じ計算結果になります。
例3)5+9-3の場合、正しい計算結果は11です。(5+9-3 = 14-3 = 11) 例4)5-3+9の場合、正しい計算結果は11です。(5-3+9 = 2+9 = 11)
例5)12÷4×3の場合、正しい計算結果は9です。(12÷4×3 = 3×3 = 9) 例6)12×3÷4の場合、正しい計算結果は9です。(12×3÷4 = 36÷4 = 9) 例7)12×3÷6÷2の場合、正しい計算結果は3です。(12×3÷6÷2 = 36÷6÷2 = 6÷2= 3)
例えば、例5)の掛け算部分(4×3)を先に計算すると間違った計算結果になります。
12÷4×3 = 12÷12 = 1 ← 間違い
プログラム言語で式を記述する場合も、この計算の優先順位のルールに従います。
Javaソースコード
OperatorPreceden.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033
public class OperatorPreceden { public static void main( String[] args ) { int a; // a = 10 - 3 * 2; System.out.println( "10-3×2=" + a ); // a = 6 * 8 - 5 * 4; System.out.println( "6×8-5×4=" + a ); // a = 5 + 9 - 3; System.out.println( "5+9-3=" + a ); // a = 5 - 3 + 9; System.out.println( "5-3+9=" + a ); // a = 12 / 4 * 3; System.out.println( "12÷4×3=" + a ); // a = 12 * 3 / 4; System.out.println( "12×3÷4="+ a ); // a = 12 * 3 / 6 / 2; System.out.println( "12×3÷6÷2=" + a ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis OperatorPreceden.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac OperatorPreceden.java
実行
C:\talavax\javasample>java OperatorPreceden
実行結果
10-3×2=4 6×8-5×4=28 5+9-3=11 5-3+9=11 12÷4×3=9 12×3÷4=9 12×3÷6÷2=3
優先順位のルールを気にせず計算式を記述したければ、先に計算したい計算部分を括弧で囲んでください。
以下は、上記の2つの例を括弧を付けて記述した例です。
例1)10-3×2の場合、10-(3*2)
例7)12×3÷6÷2の場合、((12*3)/6)/2
括弧で囲まれた計算式が優先して計算されるので優先順位のルールを気にする必要がありません。ただし、括弧で囲まれた計算式も優先順位のルールに従います。
以上です。