铸造在C中运行不佳

时间:2013-05-08 14:40:09

标签: c casting

使用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 !!我做了演员,但我不知道什么是错的。

3 个答案:

答案 0 :(得分:6)

您的计划会将0乘以0

multiply需要两个int个参数,因此您的0.20.5会在拨打电话之前隐式转换为int。这会截断为0

您的类型转换在此程序中不执行任何,因为multiply的返回值(int)将在赋值期间隐式转换为{ {1}}无论如何。

如果希望此程序正常工作,您需要更改result的定义(或添加浮点版本并调用它)。

答案 1 :(得分:2)

multiply ()输入参数为int

int multiply (int x, int y) {

并且您已将float作为输入参数传递:

multiply (0.2, 0.5);

答案 2 :(得分: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);
}