SSブログ

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

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

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