我想添加两个数字,这是长整数可以容纳的最大值;然后打印出来。如果我不将sum的值存储在变量中,我只需使用“cout”打印它然后我的计算机能够打印出来吗?代码将是这样的:
cout<<theLastValueOfLongLong + theLastValueOfLongLong;
我假设long long int是最大的主变量类型。
答案 0 :(得分:1)
如果您不想溢出,则需要使用“长整数”库,例如Boost.Multiprecision.然后您可以执行任意长整数/ f.p.操作,例如
#include <iostream>
#include <limits>
#include <boost/multiprecision/cpp_int.hpp>
int main()
{
using namespace boost::multiprecision;
cpp_int i; // multi-precision integer
i = std::numeric_limits<long long>::max();
std::cout << "Max long long: " << i << std::endl;
std::cout << "Sum: " << i + i << std::endl;
}
特别是,Boost.Multiprecision非常易于使用,并且“自然地”与C ++流集成,允许您将类型视为内置类型。
答案 1 :(得分:0)
不,首先它计算(theLastValueOfLongLong + theLastValueOfLongLong)
(导致溢出或冻结最大值可用)然后将结果发送到cout.<<(long long)
运算符
答案 2 :(得分:0)
它与:
相同long long temp = theLastValueOfLongLong + theLastValueOfLongLong;
cout << temp;
temp
将包含添加的结果,这将是未定义的,因为你得到一个溢出,然后它会输出结果它的值是什么。
答案 3 :(得分:0)
由于long long
已签名,因此添加溢出。这是未定义的行为,任何事情都可能发生。它的不太可能格式化你的硬盘,特别是在这个简单的情况下。
一旦发生未定义的行为,您就无法依靠std::cout
之后的工作。