【发布时间】:2020-04-10 09:50:24
【问题描述】:
为什么在这种情况下idx1 -1?
long long idx = (size_t)0 - 1;
cout << (size_t)0 - 1;
这打印ULLONG_MAX
cout << idx; 这打印 -1
如果idx 改为整数会有什么变化?
【问题讨论】:
-
在 Visual Studio 2019 C++ 编译器上,我得到了两者的 UINT_MAX,我认为这是正确的行为。
-
有趣,gcc 不同意:ideone.com/XGptUJ
-
是的。这很奇怪。
-
long long idx = {(size_t)0 - 1};在 gcc 上做了什么? -
区别在于
sizeof(size_t)在VS上是4个字节,在gcc上是8个字节。
标签: c++ variable-assignment size-t