月ノ書

【C++入門】式と演算子を完全解説|計算の仕組みとよく使う演算子一覧

この記事でわかること

この記事では、C++における 演算子 について解説します

  • プログラムで使われる「式」とは何か
  • C++で使われる演算子の種類と役割

ここを理解しておくと、計算処理や条件分岐が一気に分かりやすくなります

式とは何か

プログラミングにおける「式」とは値や変数、演算子を組み合わせて計算できるもの を指します。算数で1 + 2 と書くと 3 になるのと同じように、C++でも式を書けば、その結果が求められます

#include <iostream>
using namespace std;

int main() {
    int num = 1 + 2;
    cout << num << endl;
    return 0;
}
3

この例では

という流れになっています

演算子について

式の中で 計算や比較を行うための記号 を演算子と呼びます
C++にはさまざまな演算子がありますがまずは基本となるものから押さえていきましょう

算術演算子

数値の計算に使われる演算子です

演算子説明結果
+足し算3 + 25
引き算3 – 21
*掛け算3 * 26
/割り算5 / 22
%余り5 % 21
#include <iostream>
using namespace std;

int main() {
    int a = 5;
    int b = 2;

    cout << "a + b = " << a + b << endl;
    cout << "a - b = " << a - b << endl;
    cout << "a * b = " << a * b << endl;
    cout << "a / b = " << a / b << endl;
    cout << "a % b = " << a % b << endl;
    return 0;
}
a + b = 7
a - b = 3
a * b = 10
a / b = 2
a % b = 1

int 型同士の計算では割り算の小数点以下は切り捨てられます
小数を扱いたい場合は、floatdouble を使いましょう

比較演算子

数値同士を比べるための演算子です。結果は true または false になります

演算子説明結果
==等しい3 == 3true
!=等しくない3 != 2true
<小さい2 < 5true
>大きい5 > 2true
<=以下3 <= 3true
>=以上5 >= 3true
#include <iostream>
using namespace std;

int main() {
    int a = 5;
    int b = 2;

    cout << boolalpha;
    cout << "a == b : " << (a == b) << endl;
    cout << "a != b : " << (a != b) << endl;
    cout << "a > b  : " << (a > b) << endl;
    cout << "a < b  : " << (a < b) << endl;
    cout << "a >= b : " << (a >= b) << endl;
    cout << "a <= b : " << (a <= b) << endl;
}

boolalpha を使うことで、結果を 1 や 0 ではなく true / false として表示できます

代入演算子

値を変数に入れるための演算子です
非常によく使われます

ここでは a = 5 とした場合の結果を示しています

演算子説明結果
=代入a = 33
+=足して代入a += 38
-=引いて代入a -= 23
*=掛けて代入a *= 210
/=割って代入a /= 22
%=余りを代入a %= 21

短く書けるだけでなく、可読性も上がるので覚えておくと便利です

論理演算子

主に if 文などの条件分岐で使われます

演算子説明
&&ANDa > 0 && b > 0
||ORa > 0 || b > 0
!NOT!(a > 0)
#include <iostream>
using namespace std;

int main() {
    int a = 0;
    int b = 1;

    if (a && b) {
        cout << "ANDの結果:true" << endl;
    } else {
        cout << "ANDの結果:false" << endl;
    }

    a = 1;
    if (a || b) {
        cout << "ORの結果:true" << endl;
    } else {
        cout << "ORの結果:false" << endl;
    }
}
ANDの結果:false
ORの結果:true

条件が複雑になるほど論理演算子の理解が重要になります

インクリメント・デクリメント演算子

変数の値を 1だけ増やす、または減らす 演算子です

演算子説明
++1増やすa++
1減らすa–

a++a = a + 1 と同じ意味です

++aa++ では、式として評価されるタイミングが異なるため注意が必要です

ビット演算子

ビット単位で演算を行う演算子です
日常的なプログラムではあまり使われません

ここでは
a = 6(110)
b = 3(011)
とします

演算子説明結果
&AND2(010)
|OR7(111)
^XOR5(101)
~NOT1(001)
<<左シフト12(1100)
>>右シフト3(011)

ビット演算の考え方

効率重視の処理や
ハードウェア制御などで使われることがあります

まとめ

演算子を理解すると
条件分岐やループ処理が一気に読みやすくなりますの方が多いですが、効率の良い処理やハード制御ではよく出てくるそうです

学習進捗

0
Would love your thoughts, please comment.x