Menu
CoddyTech

剰余演算子

CoddyのC++ジャーニー「基礎」セクションの一部。レッスン 17/74。

剰余演算子 % は、割り算の余りを返します。C++では、次のような簡単な構文で使います。

result = dividend % divisor;
  • dividend: 割られる数。
  • divisor: 割る数。
  • result: 割り算の余り。

例:

result = 10 % 3;

ここでは、10を3で割ります。3は10に3回入り、余りは1です。したがって、resultは1になります。

通常、剰余演算は数が偶数か奇数かを確認するために使われます。

  • 数が偶数の場合、2で割ると余りは0になります。
  • 数が奇数の場合、2で割ると余りは1になり、数が負の場合は-1になります。

C++で浮動小数点数(double)を扱う場合、剰余演算子 % を直接使用することはできません。代わりに、<cmath> ライブラリの fmod() 関数を使用する必要があります。剰余演算子と同様に機能しますが、小数点以下の精度を保ちます。たとえば、次のようになります。

#include <cmath>

double result = fmod(5.2, 2.0);
// result は 1.2 です

仕組みは次のとおりです。2.0は5.2に2回入ります(4.0)。余りは1.2です(5.2 - 4.0 = 1.2)。

もう1つの例:

double result = fmod(7.8, 3.5);
// result は 0.8 です

除数が被除数より大きい場合、結果は被除数と等しくなります。これは%とfmod()の両方に当てはまります。

5 % 10 = 5
3 % 7 = 3
fmod(2.5, 8.0) = 2.5

なぜでしょうか?除数は0回しか含まれないため、被除数全体が余りになります。

challenge icon

チャレンジ

初心者

a (int)、b (double)、c (int)の3つの変数を、それぞれ9、2.6、11で初期化するコードを書きましょう。

その後、次の変数を初期化しましょう。

  • d (int)には、aを2で割った余りを格納します。 
  • e (int)には、aを3で割った余りを格納します。
  • f (double)には、bを1.5で割った余りを格納します。
  • g (double)には、bを3.9で割った余りを格納します。
  • h (int)には、cを10で割った余りを格納します。

結果を確認し、被除数と除数の違いが結果にどのような影響を与えるか見てみましょう。

自分で試してみよう

#include <iostream>
#include <cmath>

int main() {
    // 以下にコードを入力してください
    
    
    // 以下の行は変更しないでください
    std::cout << "a = " << a << std::endl;
    std::cout << "b = " << b << std::endl;
    std::cout << "c = " << c << std::endl;
    std::cout << "d = " << d << std::endl;
    std::cout << "e = " << e << std::endl;
    std::cout << "f = " << f << std::endl;
    std::cout << "g = " << g << std::endl;
    std::cout << "h = " << h << std::endl;
    return 0;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: C++オンラインコンパイラ