2012-02-22 4 views
-3

私は疑問を持っています..それは私のクイズで質問でした..この質問の答えを知りたいのです。どの機能が選択されますか?

Question: 

int foo(int); 
double foo(int); 
double foo(double); 

void bar(int value){ 
double score = foo(value); 
} 

どの機能宣言が選択されますか?またはそれは上記のどれですか?

+3

なし、コンパイルされません。 – jv42

答えて

6

Cは、オーバーロード(同じ名前の関数)をサポートしていません。

これは本当にC++の質問ですが、C++では戻り値の型だけが異なるオーバーロード(int foo(int)およびdouble foo(int))は許可されません。

+2

+1答えは「上記のどれもコンパイルされません」となります。 – jv42

1

Cはオーバーロードをサポートしていません。同じ名前の関数を複数持つことはできません。

コードはコンパイルされないため、どのように動作するのかは不明です。

これは、例えば、数学ライブラリはdoubleで動作両方sin()を提供する理由であり、そしてfloat値の代わりに単精度を使用sinf()

2

それをCで行うことは不可能です。誰でもそれを実装できれば、それはコンピュータサイエンスの最大のブレークスルーになります。

関連する問題