问题描述
- c++简单问题,求大神解答
- 代码如下,结果输入了之后完全没有输出,完全不清楚什么状况,求解!!!
#include
#include
#include
#include
float xyz;
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 sn"" ((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 sn"" ((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 argcchar* argv[])
{
return 0;
}
解决方案六:
谢谢谢谢!!!原来是我智障了,又一次展现了自己智商的底线哈哈哈