c语言的pow函数有问题

这个泡pow函数运行的时候,输入2跟4,结果是1;输入很多其他的数值结果也都是1。不知道为什么,求解答

img

你的输入在pow 计算后面啊

因为0的0次幂是1
你要把scanf放在前面呀


#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[]) {

    int x, y;
    int sum;

    printf("请输入两个数,第一个为低,第二个为幂\n");
    scanf("%d %d", &x, &y);

    sum = pow((double)x, (double)y);
    printf("%d\n", sum);

    return 0;
}

img

你把scanf放在pow前面,然后你的scanf内“%d,%d”之间是逗号,所以你键盘输入数时也要打逗号

解决方案:把第9行和第10行调换顺序即可
出现错误原因:
①在c语言中定义int类型变量,若没有赋值,那么会默认赋值为0,因此x=0,y=0
② 在第9行时pow(x,y)=pow(0,0)=1.0(注意:这里不是因为0的任何次幂都为1,而是pow函数当中是定义pow(0,0)=1.0)
而前面使用int类型进行强转,因此int sum=1
③后面随你输入x和y的值是多少,都没有对sum变量的值进行操作,因此sum的值永远都会是1啊
注意:数学当中零的零次幂是不合法的