括弧を使った優先順位の変更
一つの式の中に複数の演算子が含まれていた場合は演算子の優先順位と結合規則に従って演算されることは前のページでご説明しました。ここでは演算子の優先順位に関わらず特定の演算を優先させたい場合の方法を確認します。
次の例を見てください。
int num; num = 10 + 5 * 4;
優先順位に従えば「*」の方が「+」よりも優先順位が高いためまず「5 * 4」の演算が先に行われます。ここで「10 + 5」の方を先に演算させたい場合には括弧()を使って次のように記述します。
int num; num = (10 + 5) * 4;
括弧で囲まれた中の演算は、優先順位に関係なく優先的に行われます。よって先に「10 + 5」が演算され、次に「15 * 4」が演算されることになります。
括弧の中に複数の演算子が含まれていた場合には、括弧の中だけで演算子の優先順位や結合規則を使って演算される順番が決まります。
int num; num = (10 + 8 / 2) * 4;
上記の場合はまず括弧の中の「10 + 8 / 2」が演算されますが、この中には「+」と「/」の二つの演算子が含まれているため優先順位から先に「8 / 2」が演算されます。
また括弧の中にさらに括弧を記述することもできます。
int num; num = ((10 + 8) / 2) * 4;
括弧の中に括弧がある場合でも考え方は同じです。外側の括弧の中にある「(10 + 8) / 2」が演算されますが、この式には括弧が含まれているため括弧の中の「10 + 8」がまず最初に演算されます。
このように式の中の一部分を括弧でくくることで、優先的に演算を行わせることができるようになります。
サンプル
では簡単なサンプルで試してみます。
class JSample5_1{ public static void main(String args[]){ int num; num = 10 + 8 / 2 * 4; System.out.print("10 + 8 / 2 * 4 = "); System.out.println(num); num = (10 + 8 / 2) * 4; System.out.print("(10 + 8 / 2) * 4; = "); System.out.println(num); num = ((10 + 8) / 2) * 4; System.out.print("((10 + 8) / 2) * 4 = "); System.out.println(num); } }
コンパイル後に実行すると次のように表示されます。
括弧を記述することで優先順位が変更されていることが確認できます。
( Written by Tatsuo Ikura )