pow函数为1/2为什么输出都是1?
#include<stdio.h>#include<math.h>
int main()
{
int a;
printf("输入a的值:");
scanf("%d",&a);
printf("pow(%d,0.5) = %f\n",a,pow(a,0.5));
printf("pow(%d,1/2) = %f",a,pow(a,1/2));
return 0;
}
pow(a,0.5)是正确地输出但是pow(a,1/2)一直是1
为什么会这样是因为优先级吗? #include<stdio.h>
#include<math.h>
int main()
{
int a;
printf("输入a的值:");
scanf("%d",&a);
//printf("pow(%d,0.5) = %f\n",a,pow(a,0.5));
printf("pow(%d,0.5) = %lf\n",a,pow(a,0.5));
//printf("pow(%d,1/2) = %f",a,pow(a,1/2));
printf("pow(%d,1/2) = %lf\n",a,pow(a,1.0/2));
return 0;
}
因为1/2是按照整数运算进行的啊。1/2的运算结果为0,所以pow(a,1/2)=pow(a,0), 当然一直是1了 #include<stdio.h>
#include<math.h>
int main()
{
int a;
printf("输入a的值:");
scanf("%d", &a);
printf("pow(%d,0.5) = %f\n", a, pow(a, 0.5));
printf("pow(%d,1/2) = %f", a, pow(a, 1 / 2.0));
return 0;
}
1/2应该是默认为int型,再运算时就直接带入计算结果0去运算,所以结果为1,你用 1/2.0 试试,就可以了 应该是 1.0/2,因为 1/2 结果是整型 0 。 这一句
printf("pow(%d,1/2) = %f",a,pow(a,1/2));
改成下面这样试试
printf("pow(%d,1/2) = %f",a,pow(a,1.0/2)); 因为1/2是按照整数运算进行的啊。1/2的运算结果为0,所以pow(a,1/2)=pow(a,0), 当然一直是1了
页:
[1]