C 言語における演算子の優先順位

CBeginner
オンラインで実践に進む

はじめに

この実験では、C プログラミングにおける基本的な算術演算の演算順序について学びます。変数を宣言し、式を作成することから始め、括弧を使用して評価順序を制御する方法を探ります。最後に、最終結果を出力して、演算順序の影響を観察します。この実験では、より複雑なプログラムを構築するために不可欠な、C 言語における基本的な算術演算の基本概念を扱っています。

変数宣言と式の作成

このステップでは、演算順序を示す C 言語における変数宣言と算術式の作成方法を学びます。

まず、~/project ディレクトリに新しい C ファイルを作成します。

cd ~/project
nano order_of_operations.c

次に、以下のコードを入力します。

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int c = 3;

    int result = a + b * c;

    printf("Result of a + b * c: %d\n", result);

    return 0;
}

コードを分解してみましょう。

  • 3 つの整数変数abcを宣言します。
  • 演算順序を示す式a + b * cを作成します。
  • printf文は、この計算の結果を出力します。

プログラムをコンパイルして実行します。

gcc order_of_operations.c -o order_of_operations
./order_of_operations

出力例:

Result of a + b * c: 25

この例では、乗算 (b * c) は加算 (a + ...) よりも、C 言語の標準的な演算順序に従って先に実行されます。計算は a + (b * c) と等しく、10 + (5 * 3) = 10 + 15 = 25 となります。

括弧を使用して評価順序を制御する

このステップでは、C 言語の算術式における演算順序を変更するために括弧を使用する方法を学びます。

前のファイルを開いてコードを修正します。

cd ~/project
nano order_of_operations.c

前のコードを以下のコードに置き換えます。

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int c = 3;

    // 評価順序を変更するために括弧を使用
    int result_with_parentheses = a + (b * c);
    int result_without_parentheses = a + b * c;

    printf("括弧を使用した結果 (a + (b * c)): %d\n", result_with_parentheses);
    printf("括弧を使用しない結果 (a + b * c): %d\n", result_without_parentheses);

    return 0;
}

プログラムをコンパイルして実行します。

gcc order_of_operations.c -o order_of_operations
./order_of_operations

出力例:

括弧を使用した結果 (a + (b * c)): 25
括弧を使用しない結果 (a + b * c): 25

この例では:

  • a + (b * c) は、乗算が最初に実行されることを明示的に示しています。
  • 結果は前の例と同じです。これは、デフォルトの演算順序ではすでに乗算が加算の前に実行されるためです。
  • 括弧を使用すると、意図された演算順序が明確になり、より複雑な式での計算を変更するのに役立ちます。

最終結果を出力する

このステップでは、より複雑な算術式を作成し、演算順序を示すために詳細な結果を出力することで、前の例を拡張します。

ファイルを開いてコードを修正します。

cd ~/project
nano order_of_operations.c

前のコードを以下のコードに置き換えます。

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int c = 3;
    int d = 2;

    // 複数の演算を含む複雑な式
    int result_default = a + b * c - d;
    int result_with_parentheses = a + (b * c - d);

    printf("元の式の分解:\n");
    printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);

    printf("\nデフォルトの評価 (a + b * c - d):\n");
    printf("ステップ 1: b * c = %d\n", b * c);
    printf("ステップ 2: a + (b * c) = %d\n", a + (b * c));
    printf("ステップ 3: (a + b * c) - d = %d\n", result_default);

    printf("\n括弧を使用した評価 (a + (b * c - d)):\n");
    printf("ステップ 1: b * c - d = %d\n", b * c - d);
    printf("ステップ 2: a + (b * c - d) = %d\n", result_with_parentheses);

    return 0;
}

プログラムをコンパイルして実行します。

gcc order_of_operations.c -o order_of_operations
./order_of_operations

出力例:

元の式の分解:
a = 10, b = 5, c = 3, d = 2

デフォルトの評価 (a + b * c - d):
ステップ 1: b * c = 15
ステップ 2: a + (b * c) = 25
ステップ 3: (a + b * c) - d = 23

括弧を使用した評価 (a + (b * c - d)):
ステップ 1: b * c - d = 13
ステップ 2: a + (b * c - d) = 23

重要なポイント:

  • このコードは、括弧が演算順序を変更する方法を示しています。
  • 式のステップごとの評価を示しています。
  • 両方の式は最終的に同じ値 (23) を返します。

まとめ

この実験では、C プログラミングにおける演算子の優先順位をどのように扱うかを学びました。最初に、変数を宣言し、乗算が加算よりも先に実行されるデフォルトの演算順序を示す算術式を作成しました。次に、括弧を使用して評価順序を制御し、式の結果を変更しました。演算子の優先順位の重要性と括弧の有効な活用を理解することで、より正確で予測可能な C プログラムを作成できます。