C言語の演算子まとめ!初心者でもわかる算術・比較・論理・ビット演算の基本
生徒
「C言語では数字を足したり、比べたり、条件を確かめたりすることはできますか?」
先生
「もちろんできます。C言語には演算子という仕組みがあって、足し算や引き算、比較、条件のチェック、ビット単位の計算までできます。」
生徒
「演算子って難しそうです。」
先生
「大丈夫。ひとつずつ見ていけば、初心者でもちゃんと理解できます。まずは基本から見ていきましょう。」
1. C言語の演算子とは?
C言語の演算子とは、値と値を計算したり、比べたり、条件を判断したりするための記号です。プログラムの中では、人が「計算する」「判断する」ときの考え方を、そのままコードに置き換える役割を持っています。
たとえば「2つの数字を足す」「どちらが大きいか調べる」「条件に合っているか確認する」といった処理は、すべて演算子を使って表現します。算術演算子、比較演算子、論理演算子、ビット演算子などがあり、C言語の基本操作の土台になります。
まずは一番シンプルな例として、演算子を使って数字を計算してみましょう。
#include <stdio.h>
int main(void)
{
int x = 5;
int y = 2;
printf("計算結果:%d\n", x + y);
return 0;
}
このように、演算子はプログラムの中で常に使われる基本要素です。早い段階で意味を理解しておくと、その後の条件分岐や繰り返し処理もスムーズに学べるようになります。
2. 算術演算子(足し算・引き算・掛け算)
C言語の算術演算子は、足し算・引き算・掛け算など、数字を計算するための基本の記号です。電卓で「+」や「−」を押す感覚に近いので、プログラミング未経験でも入りやすい分野です。
ただし、C言語では「割り算」や「余り」など、普段の計算と少しだけ注意点が出る場面もあります。まずは演算子の種類を押さえつつ、どんな結果になるのかを実際に動かして確かめるのがおすすめです。
+足し算-引き算*掛け算/割り算%剰余(余り)
次のサンプルでは、同じ2つの数字を使って、足し算・引き算・掛け算・割り算・余りをまとめて表示します。結果の違いを見ると、算術演算子の役割が一気にイメージしやすくなります。
#include <stdio.h>
int main(void)
{
int a = 10;
int b = 3;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b);
printf("a %% b = %d\n", a % b);
return 0;
}
a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1
ポイントは、a / bの結果が3になっているところです。ここではint(整数)同士の計算なので、小数点以下は切り捨てられます。また、%は「割った余り」を出す演算子で、偶数・奇数の判定や、一定の間隔で処理をしたいときにもよく使われます。
3. 比較演算子(大きい・小さい・同じ)
比較演算子は、2つの値を「どちらが大きい?」「同じ?」のように比べて判断するときに使います。計算結果は数値ではなく、条件が成立すれば「真」、成立しなければ「偽」になります。C言語では、この結果をif文の条件として使うことが多いです。
また、初心者がつまずきやすいポイントとして、=(代入)と==(等しいかの比較)が別物だという点があります。条件を書いたつもりで代入してしまうと、思った通りに動かない原因になるので、ここは早めに区別して覚えておくと安心です。
==等しい!=等しくない>大きい<小さい>=以上<=以下
次の例では、同じ値かどうかだけでなく、「どちらが大きいか」も判定してみます。結果が分岐して表示されるので、比較演算子の使いどころがイメージしやすくなります。
#include <stdio.h>
int main(void)
{
int a = 5;
int b = 8;
if(a == b)
{
printf("同じ値です\n");
}
else if(a < b)
{
printf("aはbより小さいです\n");
}
else
{
printf("aはbより大きいです\n");
}
return 0;
}
aはbより小さいです
このように比較演算子を使うと、プログラムが「状況に応じて動きを変える」ようになります。まずは==と<のような基本から試して、少しずつ判定パターンを増やしていくと理解が深まります。
4. 論理演算子(複数の条件を組み合わせる)
論理演算子は、2つ以上の条件をまとめて判断したいときに使います。現実の考え方でいうと、「Aで、なおかつB」「AまたはBではない」といった条件を、そのままプログラムに書ける仕組みです。
比較演算子だけでは1つの条件しか確認できませんが、論理演算子を使うことで、より実用的な判定ができるようになります。ログイン判定や年齢チェック、入力内容の確認など、多くの場面で登場します。
&&そして(AND):すべての条件が正しいときに成立||または(OR):どちらか一方でも正しければ成立!ではない(NOT):条件の結果を反転させる
次の例では、「年齢が20以上」かつ「学生である」という2つの条件を同時にチェックしています。どちらか一方でも満たしていない場合、条件は成立しません。
#include <stdio.h>
int main(void)
{
int age = 20;
int student = 1;
if(age >= 20 && student == 1)
{
printf("条件を満たしています\n");
}
else
{
printf("条件を満たしていません\n");
}
return 0;
}
条件を満たしています
このように論理演算子を使うと、「複数の条件をまとめて判断する」処理が書けるようになります。最初は&&と||から慣れていくと、if文の理解がぐっと深まります。
5. ビット演算子(フラグ操作や高速処理)
ビット演算子は、数値を2進数(0と1)の並びとして扱い、ビット単位で計算を行う演算子です。普段の計算ではあまり登場しませんが、C言語では内部処理に近い操作ができるため、フラグ管理や状態判定などでよく使われます。
たとえば「ある機能が有効かどうか」「複数の状態を1つの数値で管理したい」といった場面では、ビット演算子を使うことで、無駄の少ない効率的な処理が可能になります。
&AND:両方が1のときだけ1になる|OR:どちらかが1なら1になる^XOR:どちらか一方だけが1のとき1になる<<左シフト:ビットを左にずらす>>右シフト:ビットを右にずらす
次の例では、2つの数値をビットAND(&)で計算しています。10進数だけを見ると分かりにくいですが、内部では2進数として処理されています。
#include <stdio.h>
int main(void)
{
int a = 6; // 2進数では 110
int b = 3; // 2進数では 011
int result = a & b;
printf("ビットANDの結果:%d\n", result);
return 0;
}
ビットANDの結果:2
この結果は、2進数で「110 & 011 = 010」となり、それを10進数に戻した値です。最初は難しく感じますが、「内部では0と1で判断している」と意識すると理解しやすくなります。ビット演算子は、C言語らしい低レベル操作を体験できる重要な要素です。
6. 演算子の優先順位と計算の流れ
C言語には演算子の優先順位があり、計算は左から順番に行われるのではなく、優先度の高い演算子から処理されます。例えば掛け算は足し算より優先されます。もし順番を変更したいときはかっこを使って処理の順序を指定することができます。
#include <stdio.h>
int main(void)
{
int a = 2 + 3 * 4;
printf("%d\n", a); // 14
int b = (2 + 3) * 4;
printf("%d\n", b); // 20
return 0;
}
14
20
7. 便利な演算子の考え方
C言語の演算子は、足し算や引き算など単純なものだけでなく、条件判定やビット操作まで幅広い仕組みが用意されています。プログラムの流れを制御し、正しい結果を導くためには欠かせない知識です。プログラミング初心者でも、たくさん触れることで自然に使いこなせるようになっていきます。