当我尝试在 C++ 中添加整数时。我得到了意想不到的输出

问题描述 投票:0回答:1

我正在尝试将两个整数相加并将其存储在一个

long long int
变量中。但是我得到了意想不到的输出。为什么会这样?

// opeartion result variable
int var1 {2000000000};
int var2 {2000000000};
long long int result {var1 + var2};

std::cout << "Var1: " << var1 << " | size: " << sizeof(var1) << std::endl;
std::cout << "Var2: " << var2 << " | size: " << sizeof(var2) << std::endl;
std::cout << "Result: " << result << " | size: " << sizeof(result) << std::endl;

输出:

Var1: 2000000000 | size: 4
Var2: 2000000000 | size: 4
Result: -294967296 | size: 8
c++ integer add
1个回答
0
投票

因为

var1
var2
相加的结果仍然是一个
int
,所以你得到的结果溢出然后分配给你的
result
变量。你想确保计算已经发生了一些更长的尺寸,即提前投射其中一个(或两个):

long long int result { static_cast<decltype(result)>(var1) + var2 };
© www.soinside.com 2019 - 2024. All rights reserved.