パスワードを忘れた? アカウント作成
452223 journal

Endowsの日記: Endows の へっぽこプログラマ日誌 第6回 1

日記 by Endows

Endows の今日の疑問。

次のプログラムは文法的に正しいのかどうか。

int main(void){

printf("%d\n", sizeof(main()));

return 0;

}

とりあえず Windows 環境の 2種類の C/C++ コンパイラで試したところ、どちらもこのコードは通すのだが。実行すると

4

と表示される。しかし sizeof に関数を渡すということ自体、本来ダメではないのだろうか、というのが疑問の大筋である。どうやらこれまでに試したコンパイラでは、 sizeof に関数を渡すと、渡した関数そのものは実行されずその関数の返り値のサイズになるようではあるが…。 gcc ではまだ試していないのでなんとも。

おまけで、たった今思いついた、こんなの。

int main(void){

return main();

}

…うわぁ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Endows (8644) on 2003年04月18日 21時15分 (#301068) ホームページ 日記

    K&R 本 (第2版 日本語版) の 251 ページを見ると、

    この演算子は関数型,あるいは不完全型,あるいはビット・フィールドの被演算数には適用できない。

    とある。

    ということで、間違っているということで OK ?

typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...