铸件在C中工作不好
使用xcode编程C,下面是f铸件在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作为
#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);
}