昨日会社からの帰り,書店に立ち寄り次の本を購入.『Cプログラミングの落とし穴(C Traps and Pitfalls)』 著者 Andrew Koenigつい先ほど前に読了.なかなか面白い本であった.Cでプログラムを書く人が必ず一度や二度は経験する失敗のあれこれについて論じている.Cに精通していると豪語するベテランプログラマでさえもこの本に書かれている内容に異論はなかろう.
この本の中から少し面白いネタを拾ってみる.まず,次のプログラムは多くのC処理系では無限ループとなる.(決して暴走ではない.プログラムに忠実に実行した結果が無限ループとなるのである.)この原因がすぐに分かる人はベテランである.
int i; int a[N]; for(i = 0; i <= N; i++) a[i] = 0;次に,次のプログラムは正くコンパイルされるだろうか.
char c; c = "0123456789"[5];if(*p == XOFF) とコーディングするところを if(XOFF == *p) と逆にコーディングする習慣をつける事はよいことかどうか.
この本は他の言語では考えられないC言語特有の陥り易い問題点を取り上げ,いかにその失敗を繰り返さないかを論じている.Cプログラミングに自信有りと思われる方こそぜひ一読される事をお薦めする.(Cに入門したての人ではちょっと理解しづらいと思われます.)