Jim*_*uch 2 c++ bit exponent pow long-integer
电源功能(用c ++编写)......
long power (long a, long b){
long result=1l;
for (int i = 0;i<b;i++){
result*=a;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
现在我做一些输出测试......
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;
Run Code Online (Sandbox Code Playgroud)
输出:
4
16
-2147483648
0
0
Run Code Online (Sandbox Code Playgroud)
好吧,似乎有一些问题,长期回落到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;
Run Code Online (Sandbox Code Playgroud)
输出:
4 4 1 8 8
Run Code Online (Sandbox Code Playgroud)
因此,它看起来像我long和int面积为32位.更多的游戏表明intmax_t类型也是64位.实际上每个PDT的上限都是64位,所以如果我需要表示一个128位整数,那么c ++是否有一个内置类(类似于BigIntegerJava)?