Endows (8644) の日記
2003 年 04 月 18 日
午後 08:18
Endows の へっぽこプログラマ日誌 第6回
Endows の今日の疑問。
次のプログラムは文法的に正しいのかどうか。
int main(void){
printf("%d\n", sizeof(main()));
return 0;
}
とりあえず Windows 環境の 2種類の C/C++ コンパイラで試したところ、どちらもこのコードは通すのだが。実行すると
4
と表示される。しかし sizeof に関数を渡すということ自体、本来ダメではないのだろうか、というのが疑問の大筋である。どうやらこれまでに試したコンパイラでは、 sizeof に関数を渡すと、渡した関数そのものは実行されずその関数の返り値のサイズになるようではあるが…。 gcc ではまだ試していないのでなんとも。
おまけで、たった今思いついた、こんなの。
int main(void){
return main();
}
…うわぁ。
この議論は賞味期限が切れたので、アーカイブ化されています。
新たにコメントを付けることはできません。
…解答編? (スコア:1)
K&R 本 (第2版 日本語版) の 251 ページを見ると、
とある。
ということで、間違っているということで OK ?