コンパイラが実際に解釈する文法は,次の通りです。
/* Example 2.1 */ | コメント (注釈文) | /* と */ で挟まれた部分はコメントと解釈。C99 では C++ のように,// から改行まででも良いとなっている。[C99, 6.4.9] |
#include <stdio.h> | プリプロセッサ (前処理) | 区切り子 # で始まるのは「プリプロセッサ」と解釈。ここでは,printf 関数が定義されているライブラリ stdio.h の読み込み。printf 関数を使うため。 |
int main(void) { } | 関数の定義 | main 関数の定義 |
const int a = 0; | 宣言 | 変数 a の定義 |
register int m = 12; | 宣言 | 変数 m の定義 |
int n = 65; | 宣言 | 変数 n の定義 |
printf("a is %d; m is %d; n is %d.\n", a, m, n); | 文(式文) | printf 関数の呼出し文。関数の呼出しは「式」。printf 関数は第1変数に指定した文字列リテラル内の文字列を標準出力。第2変数の a の値が文字列リテラル内の1つ目の %d ,第3変数 m の値が2つ目の %d ,第4変数の n の値が3つ目の %d 部分に出力される。%d を「変換指定子」(conversion specifier)といい,この場合十進法(digit)での出力を意味する。 |
return 0; | 文(return 文) | main 関数の返却。main 関数の従属変数の値(戻り値,返り値,返却値)を 0 に設定。 |
この例より理解できることは,字句それぞれが独立しているというよりは,字句の組合せで文法が成り立っていることです。そして,ソースファイルに書き込む文法は,次から構成されていることが理解できます。
先ずは,宣言の概略からです。