hirax.net::inside out::2012年01月30日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2011年12月 を読む << 2012年1月 を読む >> 2012年2月 を読む

2012-01-30[n年前へ]

C++の「i++ と ++i の違い」とExcelの「i++ と ++i の違い」 

 ビール瓶を開けながら「プログラミング言語」の話題をしました。プログラミング…と言っても、思い切り(プログラミング言語的には)低レベルな話ばかりです。ここで言う「低レベル」というのは、ハードウェアに近いとかそういう意味の「低レベル」ではありません。

 たとえば、「C++で書くけど、ほぼFORTRANなんだよね〜」という「一体どんなC++だぁ?」というツッコミをしたくなるコード論であったり、「それって、必ず7文字のインデントを入れてからC++のコードを書くってことですか?」というこれまた低次元な「インデント論」だったりしたのです。

 そんな中、「(C++なら)とりあえず、a++とは書かずに、++aと書きますよね」という話になりました(参考:C++のi++ と ++i の違い)。そして、さらに、「(C++ではなくて)C言語のi++ と ++i の違い」みたいなことをMicrosoft Excelでも気にすることがあるか?という話題になりました。話題が脈絡無くサブルーチンに"GOTO"するのは、それは単にアルコール100%の酔っぱらいだから、です。

 「C言語のi++ と ++i の違い」みたいなことがMicrosoft Excelでもあるか?気にするか?というと、その答えはもちろん「YES」です。…なぜかといえば、たとえば、A1,B1,C1という3つのセルがあった時、それらの各セルに対して、
A1=B1
B1=B1+1
C1=B1
という式を設定する場合など、(自分自身のセルを参照する)循環参照になっているために、その際の計算順序は単純にZの法則にしたがって左→右・上→下の順番で行われるために、計算結果は
 A1,B1,C1=1,2,2
となるからです。A1とC1は、同じ式がセルに入力されていても、実は違う値(タイミング)のB1を参照するがために、違う値になるのです。…それは少しばかり「(C言語の)++iとi++の違い」に似ています。

 C++という言語名は「C++って、(++Cじゃないから)使う時は(前の値と同じというわけで)Cに過ぎないよね?」といった冗談をよく聞いたような気がします。それぞれの言語が抱える「(ちょっと意外にも感じる)++iとi++の違い」にはどんなものがあるのでしょうか?そしてまた、Microsoft Excel で++aとa++の違いを気にする人は、一体どのくらいいるものでしょうか?


参考:AWKの場合