2011-01-03 26 views
5

内の関数からfloat型を返す:は、私はこの単純なコード持っているC

int main() 
{ 
    float x = foo(); 
    printf("returned value: %f", x); 
    return 0; 
} 

float foo() 
{ 
    return 5; 
} 

を私は、コードを実行すると、出力は次のとおりです。「返された値:-858993472.000000」

できる誰かしてください私にexplaingなぜ返された値isnt 5.000000ですか?

答えて

18

関数を呼び出す時点で、プロトタイプはスコープにありません。これは、関数がintを返すと仮定していることを意味します。最初に関数を呼び出すポイントの前にプロトタイプを追加します。

float f(void); 
+0

ありがとうございます!私はこれに1時間を費やしました... – MOP

+1

...または 'main()'の前に 'foo()' *を定義してください。 @MOP:コンパイラの警告レベルの設定を調整する必要があります。ほとんどのコンパイラはこれを警告し、警告を抑制したり無視したりしません。警告をエラーとして設定することをお勧めします(GCC:-Wall -Werror、VC++ \ W4 \ Wx)。 – Clifford

+0

@Clifford:...その関数定義をプロトタイプにしたいと思っています。 –

関連する問題