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