C文法マスターのための3項目

C言語を扱った入門書やWebサイトは、数多くある。しかし特にWebサイトで文法的に誤った内容を含むところが多い。

個人的にはプログラミングマスターの手始めとして、文法を徹底的にマスターするのがよいと思う。そのポイントは以下の3つを徹底的に理解すること。

  1. 宣言

例えばC言語の文は6種類だが、すべて説明できるか。
式の定義はすべて入れ子になっていて、最上位はコンマ式である。つまりすべての式はコンマ式といえる。
宣言は、、、むずいというか、こんがらがっている。

この3つをマスターしたら、C言語の本もすらすら読めるようになるし、Webでの質問も的確にできるようになると思う。


そもそものきっかけは、勉強会用の資料をレビューしたときのこと。
while文の説明として以下のように記述してあった。

■書式
while(条件式){
	文1;
}

正しい書式は以下である。

while(式)文

前者後者で、対して変わらないように思うかもしれない。
しかし、前者はそもそも用語の使い方がおかしいのだ。


「条件式」自体「式」である。「複文」自体も「文」である。従って前者は後者に完全に含まれている。

また「条件式」と「式」の違いも重要である。「条件式」は「式」の真部分集合である。具体的には代入式、コンマ式が入らない。

ついでに

{
	文1;
}

も複文の定義ではないので、複文の特別な形式である。

また、文1に続く「;」が非常に気になる。このセミコロンは不要だ。

とにかく、用語の使い方を正しくしましょう、というところから始まっているかな。