【发布时间】:2016-12-03 08:27:25
【问题描述】:
我想知道我的程序正在运行的系统上 size_t 的最大值。 我的第一反应是使用负数 1,如下所示:
size_t max_size = (size_t)-1;
但我猜有更好的方法,或者在某个地方定义一个常量。
【问题讨论】:
-
这是一个非常聪明的技巧。 +1!
-
是的,你所拥有的一切都很好(顺便说一句,你不需要演员表)。
-
@Craig:一个可能的原因是将其设置为
size_t类型变量的无效值。例如,std::string::npos设置为(size_t)-1(至少在 MSVC 实现中)。 -
有人能解释一下,
size_t max_size = (size_t)-1;实际上是做什么的以及如何做的吗?谢谢。 -
size_t是根据标准的无符号类型。所以说它被定义为一个 32 位的值。对于使用二进制补码的有符号值,-1 表示为 0xffffffff。但是,如果我们将其转换为无符号类型的 size_t,则它是最大值。(size_t)(-1)与 32 位系统上的(size_t)(0xffffffff)相同。最好使用 -1,因为如果它是 16 位 (0xffff) 或 64 位也可以。