【发布时间】:2021-06-11 14:28:31
【问题描述】:
我正在使用 Windows 10 64 位的 VS2019。 我正在做一些尝试,我尝试了以下代码
int main() {
unsigned long long ull = 70000;
unsigned int ui = ull;
std::cout << ui;
}
我希望得到不同于 70000 的输出,因为 70000 大于 int 变量可以存储的最大数字。那么为什么我得到70000 作为输出呢?这怎么可能?
【问题讨论】:
-
“70000 大于 int 变量可以存储的最大数字。” - 不知道您在哪里/如何得出结论,但显然它不可靠资源。检查 UINT_MAX 和/或
std::numeric_limits<unsigned int>::max() -
cplusplus.com/reference/climits,我用这个网站检查 UINT_MAX 但我没有看到它认为 uint 是 16 位变量
-
首先,使用cppreference.com。它可能是最好的有文档记录的语言网站。其次,您会发现它在
<climits>中定义,但对于c++,我强烈建议使用<limits>并在您的代码中打印std::numeric_limits<unsigned int>::max()。它将为您提供正确的价值,您可以亲自查看您平台上unsigned int的上限。即使在 cpluplus.com 上也清楚地显示“65535 (216-1) 或更大” -
这里有一个更好的关于C++ fundamental types的页面。请注意,整数范围可能取决于系统。