2 qq 31214517 qq_31214517 于 2016.03.23 20:25 提问

c++简单问题,求大神解答

代码如下,结果输入了之后完全没有输出,完全不清楚什么状况,求解!!!

#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");
}

6个回答

bealing
bealing   Rxr 2016.03.23 20:47
已采纳

float count_1();
float count_2();
你这是在声明函数,不是调用函数,函数没调用自然没有输出!
count_1(); //这样才是调用函数

qq_31214517
qq_31214517 谢谢谢谢!!!原来是我智障了,又一次展现了自己智商的底线哈哈哈
一年多之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.03.23 20:51

去掉类型float,否则是函数声明了,可以用float类型的变量接收函数的返回值
float count_1();
float count_2();
而且楼主InvSqrt这个函数里这句也不对x = (float)&i;
&i是取i的地址是int*类型,没法强转成float类型的赋值给x的

qq_31214517
qq_31214517 谢谢谢谢!!!原来是我智障了,又一次展现了自己智商的底线哈哈哈
一年多之前 回复
JRneymar
JRneymar   2016.03.23 21:00

main函数中调用函数时不用写float

qq_31214517
qq_31214517 谢谢谢谢!!!原来是我智障了,又一次展现了自己智商的底线哈哈哈
一年多之前 回复
qq_31214517
qq_31214517   2016.03.23 21:25

谢谢谢谢!!!原来是我智障了,又一次展现了自己智商的底线哈哈哈

hahaha777527
hahaha777527   2016.03.23 23:32

main函数可以采用两种标准写法
1.int main(void)
{
return 0;
}
2.int main(int argc,char* argv[])
{
return 0;
}

Dacc123
Dacc123   2016.03.24 07:53

谢谢谢谢!!!原来是我智障了,又一次展现了自己智商的底线哈哈哈

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!