算術を理解する

算術演算子は値を計算する仕組みです。同じ記号でも、オペランドの型や文字列の有無により結果が変わります。商と余り、優先順位、演算中の型を順に調べて計算します。

この単元で学ぶこと

  • 算術演算の型と結果を求める
  • 整数除算と余りを区別する
  • 優先順位と文字列連結を追う

本文解説

基本の四則演算 +は加算、-は減算、*は乗算、/は除算です。int price=120,count=3;int total=price*count;なら360です。数式の×や÷でなく半角*と/を使います。数値リテラルと変数のどちらもオペランドにできます。

整数の商 7/2は3です。余った0.5は整数型では表さず、0の方向へ切り捨てます。-7/2は-3で、-4ではありません。正数だけで規則を覚えると負数で誤りやすいため、割り切れない負の例も確認します。

余りを求める 7%3は1です。整数では(a/b)*b+a%bがaに戻る関係を使って確かめられます。-7%3は-1、7%-3は1です。非0の余りの符号は割られる側に従い、除数の符号と必ず一致するわけではありません。

小数の除算 7.0/2はdoubleの計算になり3.5です。int a=7,b=2;double d=(double)a/b;なら割る前にaがdoubleとなるため3.5です。double d=(double)(a/b);では先に整数商3ができ、後で3.0へ変わるだけです。

優先順位と括弧 2+3*4は掛算を先にまとめて14です。(2+3)*4なら括弧内をまとめて20です。同じ優先順位の減算や除算は左から結び付くため20/5/2は2です。括弧を付ける位置で式の構造が変わります。

文字列との加算記号 "sum="+2+3は"sum=23"です。最初の+で文字列になり、その後も連結します。2+3+"sum"は数値加算5の後に連結して"5sum"です。"sum="+(2+3)なら数値を先に計算して"sum=5"になります。

整数の0除算 int d=0;int n=8/d;は実行時にArithmeticExceptionです。余り演算8%dも同じです。doubleの8.0/0.0はInfinityとなり整数とは違います。本単元では浮動小数点の特殊値を整数の例外規則と混同しないことを押さえます。

演算する型を先に決める byteやshortを足すと通常intへ昇格します。int n=50000;long x=n*n;ではintの乗算が先で、範囲外の結果をlongへ移すだけです。long x=(long)n*n;のように演算前に拡大すれば2500000000を得られます。

図解

除算の結果は演算時の型で決まる
代入先の型が右辺の除算を遡って変えることはない。

重要ポイント

  • 整数同士の除算は0方向へ切り捨てる。
  • 余りの符号は被除数側に従う。
  • 乗除余りは加減算より優先する。
  • 文字列を含む+は連結になり、左から順に決まる。

間違えやすい点

  • doubleへ代入するだけで整数除算が小数計算に変わると思わない。
  • 負数の整数除算を常に小さい方向へ丸めない。
  • 演算結果がintの範囲を超える場合を見落とさない。

用語解説

被除数
割られる側の値。a/bではa。
剰余
整数除算後に残る値。%で求める。
二項数値昇格
二つの数値オペランドを演算に適した共通の型へそろえる規則。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。