我只想计算填满 64 盒棋盘需要多少米,但问题是,如果我减少行数和列数,程序运行正常,但如果我输入实际的 8*8 行和列,那么它会显示 0 我认为长数据类型不足以存储我将要使用的所需输出。
#include <iostream>
#include<cstring>
#include<stdlib.h>
using namespace std;
long fn()
{
int val;
long i=1;
for(int row=1;row<=8;row++)
{
for(int col=2;col<=8;col++)
{
val = i*2;
i=val;
}
}
return i;
}
main()
{
cout << fn();
}
我不需要完整的代码作为答案,请告诉我我必须使用哪种数据类型,或者如果我做错了,只有建议而不是解决方案。谢谢。
最佳答案
您需要一个 64 位的 unsigned
来表示结果。
C++ 标准要求 unsigned long long
至少是那个大小,所以要使用那个。
顺便说一句,答案是
~(uint64_t)0;
关于c++ - 计算填满国际象棋64个方格总共需要多少米,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55121776/