C言語入門|C言語の演算子を理解する:算術演算子と絶対に避けるべき落とし穴

ここまでで、足し算や引き算などの計算はずいぶん書けるようになってきましたね😊
でも、ふとこんな疑問が浮かびませんか?

「+ や ー 以外にも、演算子ってまだあるんだよね?」
「電卓と同じ感覚で使って大丈夫なのかな…?」

結論から言うと、C言語の演算子は便利だけど、油断するとかなり危険⚠️ です。
特に今回学ぶ 算術演算子 は、使い方を間違えると
・気づかないままバグが入り込む
・実行時に突然おかしな動きをする
といったトラブルを引き起こします😱

でも安心してください✨
「どこが危険で、何を絶対にやってはいけないか」を知っていれば、防げるミスばかりです。

➕➖ 算術演算子とは何者?

左右に並んだ数値のオペランドを使って、
四則演算を行う演算子 をまとめて 算術演算子 と呼びます😊

C言語で最もよく使われる算術演算子は、次の5つです👇

演算子機能優先順位評価の方向評価の例
+加算左から右3 + 5 → 8
-減算左から右10 - 3 → 7
*乗算左から右3 * 7 → 21
/除算左から右9 / 4 → 2
%剰余(余り)左から右9 % 2 → 1

こうして見ると、どれも電卓でおなじみですね😊
ところが…C言語では 電卓と同じ感覚で使うと危ない演算子 が混ざっています⚠️

⚠️ 落とし穴①:整数同士の割り算は「小数にならない」

まず気をつけたいのが 除算演算子 / です。

C言語では、整数型同士で割り算をすると、小数点以下はバッサリ切り捨て られます。

たとえば、次のようなプログラム👇

プロジェクト名:3-4-1 ソースファイル名: sample3-4-1.c

#include <stdio.h>

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

    printf("a / b の結果は %d です\n", a / b);
    return 0;
}

出力結果👇

a / b の結果は 2 です

「えっ、2.5じゃないの?」と思いますよね😳
でも、a も b も int 型なので、結果も int 型 として評価されます。

💡 小数で割り算したいときの対処法

どちらか一方を小数にすればOKです😊

double result = a / 2.0;

こうすることで、浮動小数点として計算されます✨

⚠️ 落とし穴②:剰余演算子 % は数値専用

次に注意したいのが 剰余演算子 % です。

この演算子は、割り算の余りを求めるためのもの で、
整数型同士でしか使えません。

int r = 9 % 4;  // r は 1

ここまでは問題ありません😊

ところが…
文字列やString型に対して使おうとすると大事故 になります⚠️

🚫 文字列に算術演算子を使ってはいけない!

ここが今回の最大の落とし穴です😱

次のようなコードを「なんとなく」で書いてしまう人が、とても多いんです。

typedef char String[1024];  // 文字列型っぽいものを作る

String color = "ブルー";
String name  = "ドラゴン";

printf(color + name);     // 「ブルードラゴン」にしたくて…
printf("version" + 2);    // 「version2」にしたくて…

一見、他の言語っぽくて正しそうですよね💦
でも C言語では完全にアウト です。

😱 何が怖いのか?

  • 文字列は算術演算の対象ではない。
    演算子は 数値計算専用
  • それでも コンパイルエラーにならない場合がある

つまり👇
間違っているのに、警告されないことがある のです⚠️

その結果、

  • 実行中に突然落ちる。
  • 意味不明な動作をする。
  • デバッグが地獄になる。

という最悪の展開を迎えます😨

📜 文字列に関する「第4のルール」

ここで、String型のルールを思い出しましょう😊

① 配列サイズ1024を小さくしてはいけない。
② 「1024文字入る」と思ってはいけない。
③ 初期化以外で = 代入をしてはいけない。
文字列を計算や連結に使ってはならない

今回学んだ算術演算子は、
すべて文字列には使えません

特に、

  • 文字列を + で連結しようとしない。
  • 文字列を % や / の対象にしない。

この2点は、必ず守ってください😊

🧠 算術演算子を安全に使うための心構え

最後に、覚えておいてほしいポイントをまとめます✨

ポイント内容
割り算整数同士だと小数は出ない。
% 演算子整数専用、文字列不可
文字列算術演算子は一切使わない。
危険性間違ってもコンパイルが通る場合がある。

「とにかく、文字列に演算子を使って何かしようとしない
これを合言葉にしておけば、かなり安全です😊