C言語 #defineとは? 記号定数

今回は、記号定数を使ってみましょう。

プログラム例 その1

#include <stdio.h>

void main(void) {
      int a = 0, i;

      for (i=1; i<=10; i++) {
            a = a + i;
      }

      printf("%dから%dの合計は%dです\n", 1, 10, a);
}

上記プログラムは1から10まで合計を表示しますが、
10から100までを合計を表示するように改造してみましょう。

プログラム例 その2

#include <stdio.h>

void main(void) {
      int a = 0, i;

      for (i=10; i<=100; i++) {
            a = a + i;
      }

      printf("%dから%dの合計は%dです\n", 10, 100, a);
}

4箇所を直せばOKですが、もっと便利な方法があるのです。

プログラム例 その3

#include <stdio.h>
#define FROM 10
#define TO 100

void main(void) {
      int a = 0, i;

      for (i=FROM; i<=TO; i++) {
            a = a + i;
      }

      printf("%dから%dの合計は%dです\n", FROM, TO, a);
}

まず、記号定数と呼ばれる書き方です。

#define FROM 10
#define TO 100

この時、文末にセミコロンは付けませんので、注意して下さい。

プログラムの中にFROMと言う文字を発見したら10と置き換えてくれ。
という意味になります。
同じくTOと言う文字を発見したら100と置き換えてくれ。
という意味になります。

そしてfor文の中で使っています。FROMの部分が10に、
TOの部分が100に置き換わります。

この方法だと#defineの定義部分の数値だけ書き換えればOKとなり、
記号定数を使わないプログラム例その2と比べて修正量が減り、大変便利です。

今は修正箇所が4つだけなので、大した事がないと思われるかもしれませんが、
大規模なプログラムとなると修正量が半端ではなく、
記号定数の使用は必須となります。

ちなみにdefineデファインと読みます。
また、記号定数に使う文字は、一般的に大文字を使う事が多いです。