わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

ここが変だよC言語

ゴールデンウィーク明けすぐに届いた2冊の本があります.

ページ数は少なく,軽く読めるのですが,書評にしようとすると,何度も読み直しました.本や論文などに付箋をつけることは滅多にないのですが,この2冊については,しました*1
この本を一言で表現すると,「C文法の疑問点について,多数の検証コードを通じて解決を試みている」となるでしょう.確かに,「疑問→検証→結論」で小さな疑問点でもすぐ明らかにする態度は,学生に身につけてほしいと考えます.
しかしこの2冊は,あまり良書とは言えません.残念ながら,学科の学生には勧められません.
明確な間違いがあちこちにあります.例えば,「あれ,おかしいぞ」と思った例を一つ,示します.上p.157の

しかし,先に書いたように,要素数の無い配列を初期化した場合,初期化の数を間違えてもコンパイラが勝手に余った要素を確保する.しかし,その要素はstatic記憶クラスなら要素の型に応じて0またはNULLに初期化されるが,その他の記憶クラスでは不定のため何が設定されているか分からない.

のうち,「要素数の無い配列を初期化した場合」は,それまでの説明の流れから,「要素数が初期化の数よりも多い配列の場合」のように書こうとしたのではないかと推測します.しかし,そう変更しても,この主張は間違いで,staticでもautoでも

初期化子に要素数よりも少なく値を指定すると,残りには 0 が入ります。

のほうが正しいでしょう.
技術的な話題の他に,これらの本には気になるところがあります.それは明日に.

*1:もしリクエストがありましたら,どこに付箋をつけたか,この日記に書くことにします.そこまでニーズはないかな.