幂函数(用 C++ 编写)...
long power (long a, long b){
long result=1l;
for (int i = 0;i<b;i++){
result*=a;
}
return result;
}
现在我做一些输出测试......
cout<<power(2l,2l)<<endl;
cout<<power(2l,4l)<<endl;
cout<<power(2l,31l)<<endl;
cout<<power(2l,32l)<<endl;
cout<<power(2l,61l)<<endl;
输出:
4
16
-2147483648
0
0
好吧,长期回落到 32 位大小(而不是保持为 64 位)似乎存在一些问题。我想知道为什么这不起作用,但如果我使用该long long
类型,一切正常。
一些额外的信息:
我正在使用 C++ 和编译器 MinGW
我正在运行 64 位操作系统(Windows 7)
更新:
你们真棒!从来没想过会发生这样的事情。
我刚刚检查了一些使用的任意 PDT sizeof
,这就是我发现的......
cout<<sizeof(long)<<" "<<sizeof(int)<<" "<<sizeof(char)<<" "<<sizeof(long long)<<" "<<sizeof(uint64_t)<<endl;
输出:
4 4 1 8 8
所以,它看起来像我的long
,int
都是 32 位大小的。更多玩弄表明 intmax_t 类型也是 64 位的。实际上,每个 PDT 的上限为 64 位,所以如果我需要表示一个 128 位整数,c++ 是否有一个内置类(类似于BigInteger
Java 中的东西)?