面白いコードがあったので転載

1:0th track@mixi:2009/04/04(土) 07:22:00
http://mixi.jp/view_bbs.pl?id=39904342&comm_id=2880


int i = 0;
char c[10];

while(i<10)
i++[c] = 0;


こんなことができるんだねー。
int配列でもちゃんと0が入るし。
これって配列の型ってどうやって判断されてるんだろうね。


"0123456789ABCDEF"[i];


こっちはまだ分かりやすい。
単に先頭からのオフセット指定して取り出すだけだもんね。

<魔法遣いに大切なことは分からないけど | 4月の記事一覧 | GetOpenFileNameを使うと作業フォルダが変更される>
<<前の5件 | ぜろろん雑記(開発中)TOP | 次の5件>>


2:0th track@mixi:2009/04/04(土) 11:43:00
あーそうか。
パース時に *(i + c) に解釈されて、ベースアドレス持ってる方の型情報を見るから
結局どっちに書いても一緒なのか。
てかエキスパート C プログラミングに解説してあったわ。



このブログシステムはまだ開発中です。
コメントフォームが表示されていても書き込むことはできません。

ナビゲーション


急ぐとも 心静かに 真ん中へ
散らば吉野の 花もきたなし