C文法マスターのための3項目
C言語を扱った入門書やWebサイトは、数多くある。しかし特にWebサイトで文法的に誤った内容を含むところが多い。
個人的にはプログラミングマスターの手始めとして、文法を徹底的にマスターするのがよいと思う。そのポイントは以下の3つを徹底的に理解すること。
- 式
- 文
- 宣言
例えばC言語の文は6種類だが、すべて説明できるか。
式の定義はすべて入れ子になっていて、最上位はコンマ式である。つまりすべての式はコンマ式といえる。
宣言は、、、むずいというか、こんがらがっている。
この3つをマスターしたら、C言語の本もすらすら読めるようになるし、Webでの質問も的確にできるようになると思う。
そもそものきっかけは、勉強会用の資料をレビューしたときのこと。
while文の説明として以下のように記述してあった。
■書式 while(条件式){ 文1; }
正しい書式は以下である。
while(式)文
前者後者で、対して変わらないように思うかもしれない。
しかし、前者はそもそも用語の使い方がおかしいのだ。
「条件式」自体「式」である。「複文」自体も「文」である。従って前者は後者に完全に含まれている。
また「条件式」と「式」の違いも重要である。「条件式」は「式」の真部分集合である。具体的には代入式、コンマ式が入らない。
ついでに
{ 文1; }
も複文の定義ではないので、複文の特別な形式である。
また、文1に続く「;」が非常に気になる。このセミコロンは不要だ。
とにかく、用語の使い方を正しくしましょう、というところから始まっているかな。