【发布时间】:2021-03-24 15:43:34
【问题描述】:
void main()
{
long long ll = 2 * 1024 * 1024 * 1024;
unsigned long long ull = (2 * 1024 * 1024 * 1024);
std::cout << ll << "\n" << ull;
}
我使用 Visual Studio 2019 的输出是
-2147483648
18446744071562067968
我不知道为什么会发生溢出,请帮忙
【问题讨论】:
-
main应该返回int。 -
在这两种情况下,您都将计算作为 int 并溢出。右手边的所有数字都是整数。试试
std::cout << 2 * 1024 * 1024 * 1024ull << std::endl; -
提示:使用来自
<cstdint>的uint64_t ull之类的东西,而不是unsigned long long long long plz be long ull之类的疯狂,因为你不清楚你实际上会得到什么。
标签: c++ visual-studio c++11 overflow