私はこのような二重の機能を持っている:私は値を受信し、それを印刷し、別の関数でdouble関数からの戻り値がintになるのはなぜですか?
double f(){
double value=0.1234;
return value;
}
を。
printf("%f",f());
0.1234という値が表示されていますが、代わりに0が表示されます。私はこのようなタイプにキャストした場合 :
printf("%f",(double)f());
を-147923499.34のような非常に奇妙な値が印刷されます。
いくつかのチェック(printofof)の後、f()の戻り値は4バイトで、double型は8バイトであることがわかりました。
この根本的な理由は何ですか?関数から正しいdouble値を返すにはどうすればよいですか?
[正常に動作するようです](http://ideone.com/IaZyOU)。あなたのエラーを示す最小限のコンパイル可能なプログラムを投稿してください。 –
'f()'を呼び出したときに、プロトタイプを持っていなかったかもしれません。 –
@ Alfie:これは優先順位の仕組みではなく、少なくとも2つの理由でコンパイルされていない場合です。 –