So-net無料ブログ作成

実は奥が深かったポインタ解説記事 [ざれごと]このエントリーを含むはてなブックマーク#

PointerTitle.png

すっかり有名になった、 某所の ポインタの解説記事ですが、実は、奥が深かったことが判明しました。

信じられない間違い

今回のポインタ解説記事は、にわかには信じられない間違いが記述されていました。

    #include <stdio.h>

    int main( void ) {
      int *n;
      *n = 5;
      printf( "%d\n", *n );
      return 0;
    }

普通では考えられない間違いなので、きっと、何か秘密が隠されているに違いないと私は調査を開始しました。

特定の処理系に依存するのか?

このプログラムは、明らかに問題があるのですが、もしかしたら、ある特定の処理系で意味を持つものかも知れません。 そこで、自宅で稼動しているあらゆる処理系に片っ端から試してみました。

  • FM-77 Doraco C
  • OKI if-800 BDS-C
  • Apple ][ UCSD p-system C
  • SONY Hitbit MSX-C

ついに発見、イースターエッグ

そして、ついに発見しました。 PDP-11のBSD-C4.1でコンパイル、実行したところ、プログラムが、何か意味のある数値を表示したのです。

# a.out

 131080

#

どうやら、このプログラムをコンパイルしたときに限り、発動するイースターエッグのようです。 しかも、特権ユーザにならなくては、動作しないという念の入れようでした。

ところが、記事のプログラムには肝心なところに間違いがありました。 *nを十進数値として表示させてはいけなかったのです。 正しくは、

      printf( "%s\n", *n );

と、文字列として表示させるべきでした。 すると、良く見られる言葉が表示されるようになりました。

# a.out

Happy April Fool !!!

#

関連サイト


nice!(0)  コメント(5)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 5

DAI

お疲れさまです。
当家で稼働している、PC9801用PowerCもお貸ししましょうか。
by DAI (2008-04-01 21:17) 

Sim

最初の方はまじめに読み始めて、途中で???、最後であははでした。
関連サイトの方も、笑えますね。
それにしても、元の記事ってネタだったんでしょうか。
by Sim (2008-04-02 00:24) 

hamayan

面白いです。コメントも面白いです。
嗚呼、私も何かギャグ考えておけば良かった。
by hamayan (2008-04-02 07:43) 

noritan

皆様、楽しんでいただけましたでしょうか。

夜9時まえに風呂で思いついたネタで、時間に追われて急いで書きました。
昔の処理系を思い出すのが大変で、「UCSD-PにCコンパイラってあったっけ?」などと時代考証は適当です。

今度は、PowerCも貸していただきます。

by noritan (2008-04-02 20:13) 

DAI

noritan さん、処理系の列挙のあたりで気がつきました。
しかし、このネタから来るとは思いませんでした。

以前はトラ技の4月号で1ページを使って4月1日ネタをやってましたよね。

来年に向けて1年がかりでネタ探ししましょう。
by DAI (2008-04-02 23:15) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。