我试图通过构建一个简单的算术计算器应用程序来掌握C++基础知识。现在我正在尝试弄清楚如何使其能够在 32 位 Windows 上处理大于 4294967295 的整数。我知道Windows的集成计算器能够做到这一点。我错过了什么?
请注意,此应用程序应该可以使用MSVC编译器和g++(MinGW/GCC)进行编译。
谢谢。
如果你想同时兼容gcc和msvc,请使用
你可能想要uint64_t这个。它将使您达到18,446,744,073,709,551,615。
还有一些库可以让您达到与要处理的内存一样大的整数。
使用 __int64 在 Visual C++ 中获取 64 位 int 计算 - 不过不确定 GCC 是否会喜欢这个。
您可以创建一个头文件,键入 typedefs(例如)为每个编译器MyInt64
适当的内容。 然后你可以在内部使用 MyInt64
,编译后的代码对于每个目标都是正确的。 这是在一个源代码库上支持不同目标编译器的一种非常标准的方式。
afai 可以告诉,long long
两者都可以正常工作,但我没有使用 GCC 所以 YMMV - 请参阅此处了解 GCC 信息和此处了解视觉C++。
您还可以创建一个"Large Number"类,该类基本上以一种或另一种形式跨多个变量存储值
有不同的解决方案,如果 2^64 对您来说足够大,您可以使用 64 位整数类型(这些依赖于实现,因此请搜索您的特定编译器)。另一方面,如果您希望能够处理任何数字,则必须使用或实现封装它的 BigInteger 类型。实现是一个有趣的练习...基本上使用较小类型的向量,对每个子元素进行操作,然后合并并规范化结果。