代码如下,结果输入了之后完全没有输出,完全不清楚什么状况,求解!!!
#include
#include
#include
#include
float x,y,z;
float InvSqrt(float x)
{
float xhalf = 0.5f*x;
int i = (int)&x;
i = 0x5f3759df - (i >> 1);
x = (float)&i;
x = x*(1.5f - xhalf*x*x);
return x;
}
float count_1()
{
clock_t s1 = clock();//开始时间
float i = 1 / sqrt(x);
clock_t e1 = clock();//开始时间
printf("%.2f s\n", ((float)e1 - s1) / CLOCKS_PER_SEC);
return 0;
}
float count_2()
{
clock_t s2 = clock();//开始时间
float i = InvSqrt(x);
clock_t e2 = clock();//开始时间
y = s2 - e2;
printf("%.2f s\n", ((float)e2 - s2) / CLOCKS_PER_SEC);
return 0;
}
void main() {
printf("请输入一个值");
scanf_s("%f", &x);
float count_1();
float count_2();
system("pause");
}
float count_1();
float count_2();
你这是在声明函数,不是调用函数,函数没调用自然没有输出!
count_1(); //这样才是调用函数
去掉类型float,否则是函数声明了,可以用float类型的变量接收函数的返回值
float count_1();
float count_2();
而且楼主InvSqrt这个函数里这句也不对x = (float)&i;
&i是取i的地址是int*类型,没法强转成float类型的赋值给x的
main函数中调用函数时不用写float
谢谢谢谢!!!原来是我智障了,又一次展现了自己智商的底线哈哈哈
main函数可以采用两种标准写法
1.int main(void)
{
return 0;
}
2.int main(int argc,char* argv[])
{
return 0;
}
谢谢谢谢!!!原来是我智障了,又一次展现了自己智商的底线哈哈哈