开始学习数据结构和算法,有一个取幂快速算法例子,自己写了一下
发现2的62次方这种数打印的值是0,不知道为啥
下面是代码
#include<stdio.h>
long int pow(long int x,unsigned int n);
long int pow(long int x,unsigned int n)
{
if(n==0)
{
return 1;
}
else if(n==1)
{
return x;
}
else if(!(n%2))
{
return pow(x*x,n/2);
}
else
{
return pow(x*x,n/2)*x;
}
}
int main(void)
{
int x,n;
scanf("%d%u",&x,&n);
printf("%d",pow(x,n));
return 0;
}
```c

先不说long int是不是8字节,你这个printf的格式能打印8字节整型吗?
先怀疑是溢出,long也是4字节,最多也就2^31-1,你直接算2^62当然会溢出
八字节的长整型要写为long long int
有帮助望采纳