1.文法の基礎から

1-5.Cの規則『トークン・フリーフォーマット』

◇Cの規則『トークン』

トークンの定義は
C言語の構成要素の最小単位=単語
となります。それでは一体どれをトークンと呼ぶか以下のプログラムでトークンに分解してみます。

#include<stdio.h>
/* メイン関数 */
main()
{
    printf("文字列");
}

このプログラムをトークン単位に分解すると、(プリプロセッサは省いています)

/*
*/
main
(
)
{
printf
(


)
;
}

となります。
コメント文の中身やダブルクォーテーションで囲まれた部分はC言語を構成する単語ではないのでトークンになりません。
次にトークン同士は1つ以上の空白(スペース、改行、タブ)で隔てる必要があります。
ただし、カンマ、セミコロン等の区切り記号と # その他括弧や演算記号は隔てる必要はありません。
また、main や printf をこれ以上分解すると例えば pri ntf のように分けた場合printfとはもはや認識されず、2つのトークンとして認識されます。

◇フリーフォーマット

C言語の記述は自由書式で前述のトークンの規則を守る限り個人好みの記述が出来ます。

例えば、文字列を表示するプログラムの場合でも

例1

#include<stdio.h>
main(){printf("文字列");}

例2

#include<stdio.h>
main(){
  printf("文字列");
}

例3

#include<stdio.h>

main()
{
    printf("文字列") ;
}

と言うように記述できますが、出来るだけ読みやすい記述を心がけることが必要です。
通例として例3の書き方が多くみられます。
特に中括弧はまとまった処理の単位なのでそのまとまりごとに位置合わせをすることに心がけてください。
たとえば、

main()
{
    文1;
    文2;
    処理1()
    {
        文3;
        文4;
    }
    文5;
}

というようにインデントして処理の範囲を明確にします。

◇Cの規則『その他』

下ののプログラムについて

#include<stdio.h>

main()
{
    printf("文字列") ;
}

最初の
#include<stdio.h>
はプリプロセッサ行でprintf関数を使うために必要なので記述します。
決まりとして1行1文で記述しなければなりません。
#include
<stdio.h>
のように2行にまたがっての記述はコンパイルエラーになります。

次にmain()これはメイン関数でありC言語には必ず一つだけ記述しなければなりません。それは、コンパイラがメイン関数の始まりをプログラムの開始とするからでmain()がないとエラーを出します。
その後に続く中括弧で囲まれた領域がメイン関数の内容になります。一般に中括弧で囲まれた領域をブロックと呼び処理の単位を表します。

また、ブロック内の一行は文になります。文の終わりは;(セミコロン)を置く決まりがあります。これによって1行内に複数の文を記述することが出来ますが見易さを考えると1行1文が望ましいところです。

さらに、 printfは関数です。関数は必ず定義されていないと使用することが出来ません。 printf関数の定義は stdio.h 内にあるのでそれをインクルードすることにより自分で定義をする必要がありません。

といったところです。