C语言中int通常是32位的,所以2的64次方已经越界了,不能用int表达。用double类型可以做,做出来也是不精确的:
#include
#include "math.h"
int main(int argc,char *argv[]){
printf("%f\n",pow(2,64));
return 0;
}
或者:
#include
int main(int argc,char *argv[]){
double s;
int i;
for(s=i=1;i<=64;s*=2,i++);
printf("%.0f\n",s);
return 0;
}