为什么我不能通过C代码制作这个系列

Pro*_*Mad 1 c series

我试着在C:
系列中写下面的系列:(1^1),(2^(1/2)),(6^(1/4)),(24^(1/8)),...,((n!)^((1/2)^n)).

C代码:

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


int fact(int x){
  if (x==1)
    return 1;
    else return x*fact(x-1);
}


int main(){
    int x,y;
    scanf("%d",&x);
    y=x;
    x=fact(x);
    y=pow(0.5,y-1);
    double h;
    h=pow(x,y);
    printf("\n%lf" ,h);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么一直打印1.00000

unw*_*ind 6

因为变量yint,所以存储它的返回值pow()会截断.阅读手册页pow().

请检查如何在编译器中启用所有警告,并查看编译器输出.