Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
铸件在C中工作不好_C_Casting - Fatal编程技术网

铸件在C中工作不好

铸件在C中工作不好,c,casting,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!!我进行了转换,但我不知道出了什么问题。乘法输入参数为int: 您已经将float作为

使用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!!我进行了转换,但我不知道出了什么问题。

乘法输入参数为int:

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

multiply (0.2, 0.5);
您的程序将0乘以0

乘法接受两个int参数,因此在进行调用之前,0.2和0.5会隐式转换为int。这将两者都截断为0

typecast在这个程序中不做任何事情,因为multiply的返回值是一个int,它在赋值过程中将被隐式转换为result


如果希望此程序正常运行,您需要更改乘法的定义或添加浮点版本并调用它。

您好,有一个基本问题。因为您要乘的数字是浮点数,但是您要将它们传递到函数multiply As 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);
} 

您的乘法函数定义为int,您必须更改为float,因为您返回的是float x*y。在原始版本中,要乘法的两个参数都将为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);
}