-3

xcodeを使用してCをプログラミングする、これがfです

#include <stdio.h>

int multiply (int x, int y) {
return x * y;
}
int main()
{

float result = (float) multiply (0.2, 0.5);
printf("the result is %f", result);

}

正しい値が得られません。0.0000 が得られます!! キャスティングはしましたが、何が悪いのかわかりません。

4

3 に答える 3

6

あなたのプログラムは を掛け0ます0

multiplyは 2 つのintパラメーターを取るため、呼び出しを行う前に暗黙的に と に変換され0.2ます。それは両方を切り捨てます。0.5int0

型キャストは、このプログラムでは何もしません。multiply(これは です)の戻り値は、とにかくintへの割り当て中に暗黙的に変換されるためresultです。

multiplyこのプログラムを正しく動作させるには、定義を変更する(または浮動小数点バージョンを追加してそれを呼び出す) 必要があります。

于 2013-05-08T14:42:32.583 に答える
2

multiply ()入力引数は次のintとおりです。

int multiply (int x, int y) {

floatそして、入力引数として渡しました:

multiply (0.2, 0.5);
于 2013-05-08T14:41:56.403 に答える
1

こんにちは、基本的な問題があります。乗算する数値は浮動小数点数ですが、これらを int として関数に渡しているため、1 と 0 に丸められます。

これはうまくいくはずです

#include <stdio.h>

int multiply (float x, float y) {
  return x * y; 
}
int main()
{

float result = (float) multiply (0.2, 0.5);
printf("the result is %f", result);
} 
于 2013-05-08T14:47:50.110 に答える