c++ - 计算填满国际象棋64个方格总共需要多少米

标签 c++

我只想计算填满 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/

相关文章:

c++ - 在 C++ 中比较 char 和 Int

c++ - 这个编译器错误是由无效代码触发的,还是应该编译?

c++ - 如何使用 TouchGFX 在 LCD 屏幕上显示 ADC 值?

c++ - 关于软件许可证

c++ - 带空括号的默认构造函数

c++ - Win32编译器选项和内存分配

Python Ctypes 读取从 C++ dll 返回的 char*

c++ - 堆栈溢出和静态数组

c++ - 我可以使用模板提取结构或公共(public)类成员吗?

c++ - __declspec(dllimport) 的正确用法