カテゴリ: C言語 更新日: 2026/02/15

C言語の演算子の結合規則を完全ガイド!初心者でもわかる演算の読み方

C言語の演算子の結合規則を理解しよう
C言語の演算子の結合規則を理解しよう

先生と生徒の会話形式で理解しよう

生徒

「C言語で足し算や引き算の計算はできるようになってきたんですけど、複雑な式になるとどこから計算されるのか分からなくなります。」

先生

「その気持ちはよく分かります。C言語には『演算子の結合規則』というルールがあり、それによって計算の順番が決まるんです。」

生徒

「演算子の優先順位とは違うんですか?」

先生

「優先順位は『どの演算子が先』かという話で、結合規則は『同じ優先順位同士ならどちらから計算するか』という話なんです。実際の計算を例にしながら解説します。」

1. 結合規則とは?

1. 結合規則とは?
1. 結合規則とは?

C言語には多くの演算子があります。足し算、引き算、掛け算、割り算、比較、代入など、たくさんの演算子が混ざった式を書くことができます。しかし、式の書き方によっては、どこから計算されるか分かりにくくなることがあります。そんなときに役立つのが結合規則という仕組みです。

結合規則とは、同じ優先順位を持つ演算子が複数並んだとき、どちら側から計算するかを決めるルールです。結合規則には大きく分けて二種類があります。

  • 左結合:左から右へ計算する
  • 右結合:右から左へ計算する

日常的な算数では「左から右」が当たり前のように思えますが、C言語では例外もあります。代入や条件演算子などは右結合なので、理解していないと結果がまったく違うものになります。

2. 左結合の例

2. 左結合の例
2. 左結合の例

まずは左結合から説明します。左結合は、左側の式から順番に計算していく結合規則です。算数と同じ感覚で理解できるので、イメージしやすいルールです。例えば、次のような式です。


int result = 10 - 3 - 2;
printf("%d", result);

この式は数字が並んでいるだけなので簡単に見えますが、計算の順番は「左から右」です。

つまり、

10 - 3 = 7

7 - 2 = 5

したがって結果は5になります。


5

掛け算、割り算、足し算、引き算、ビット演算子、比較演算子、論理演算子の多くは左結合です。同じ優先順位同士なら、基本的に左から処理されると覚えておくと安心です。

3. 右結合の例

3. 右結合の例
3. 右結合の例

右結合は、右側から計算する結合規則です。特に、代入演算子や条件演算子(?:)などが右結合になります。右結合を知らずにプログラムを書くと、予想外の動作をすることがあります。


int a, b, c;
a = b = c = 5;
printf("%d %d %d", a, b, c);

このコードは一見複雑に見えますが、右から順番に計算されます。

c = 5 → b = c → a = b という順番です。すべてに5が代入されるため、aもbもcもすべて5になります。


5 5 5

右結合を知らないと、「左から代入される」と誤解してしまうことがあります。正しい動作を理解するために、右結合の存在を必ず意識しておきましょう。

4. 結合規則の一覧

4. 結合規則の一覧
4. 結合規則の一覧

C言語の演算子の結合規則は決められており、どれが左結合、どれが右結合なのかがはっきりと分類されています。以下は代表的な結合規則の一覧です。

演算子の種類結合規則
単項演算子!, ++, --, sizeof右結合
掛け算・割り算・剰余*, /, %左結合
足し算・引き算+, -左結合
比較演算子<, >, <=, >=左結合
等値演算子==, !=左結合
論理演算子&&, ||左結合
代入演算子=, +=, -=右結合
条件演算子?:右結合

5. 実際に比較してみよう

5. 実際に比較してみよう
5. 実際に比較してみよう

左結合と右結合の違いを感じるには、実際のコードを見比べると分かりやすくなります。次の二つの式を比べてみましょう。


int x = 20 / 5 / 2;
printf("%d", x);

2

この式は20 ÷ 5 = 4、4 ÷ 2 = 2となり、左から処理されるため結果は2です。

次は右結合の例です。


int x, y;
x = y = 10;
printf("%d %d", x, y);

10 10

6. 結合規則を無視したいときは?

6. 結合規則を無視したいときは?
6. 結合規則を無視したいときは?

結合規則を覚えるのが難しいと感じる人もいます。その場合、もっと簡単な方法があります。それはかっこで囲むことです。かっこは最優先で計算されるので、結合規則を気にせず書けます。


int result = (10 - 3) - 2;
printf("%d", result);

5

初心者のうちは、迷ったら必ずかっこを使った方が安全です。自分にも他人にも読みやすいコードになり、バグも減らせます。

カテゴリの一覧へ
新着記事
New1
C言語
C言語で外部ライブラリを利用する方法をわかりやすく解説!リンク設定の基本
New2
C言語
CMake入門|C言語でクロスプラットフォームビルド環境を作る基本
New3
C++
C++の関数テンプレート入門!型に依存しない便利な共通化の仕組み
New4
C++
C++におけるメモリ管理の特徴を徹底解説!初心者でも理解できるメモリの仕組み
人気記事
No.1
Java&Spring記事人気No1
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.2
Java&Spring記事人気No2
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.3
Java&Spring記事人気No3
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.4
Java&Spring記事人気No4
C言語
LinuxでC言語開発環境を構築する方法【GCCとMakefileの基本】
No.5
Java&Spring記事人気No5
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.6
Java&Spring記事人気No6
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.7
Java&Spring記事人気No7
C言語
C言語の配列と文字列の基本を完全ガイド!初心者でもわかる宣言と使い方
No.8
Java&Spring記事人気No8
C言語
C言語の定数定義を完全解説!初心者でもわかるconstと#defineの違い