cc123hh 发表于 2020-2-28 17:40:52

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
为什么会这样是因为优先级吗?

人造人 发表于 2020-2-28 17:51:38

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

major_lyu 发表于 2020-2-28 17:56:30

因为1/2是按照整数运算进行的啊。1/2的运算结果为0,所以pow(a,1/2)=pow(a,0), 当然一直是1了

0禾木0 发表于 2020-2-28 18:09:04

#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 试试,就可以了

zltzlt 发表于 2020-2-28 18:16:21

应该是 1.0/2,因为 1/2 结果是整型 0 。

jackz007 发表于 2020-2-28 18:22:28

      这一句
      printf("pow(%d,1/2) = %f",a,pow(a,1/2));
      改成下面这样试试
      printf("pow(%d,1/2) = %f",a,pow(a,1.0/2));

fatman2233 发表于 2020-2-29 19:31:00

因为1/2是按照整数运算进行的啊。1/2的运算结果为0,所以pow(a,1/2)=pow(a,0), 当然一直是1了
页: [1]
查看完整版本: pow函数为1/2为什么输出都是1?