这段代码在做什么?(为size_t)-1-

jte*_*erm 7 c++

有人可以解释当size_t或任何其他类型标识符包含在括号中时会发生什么.我知道这是旧的类型转换语法,但在这种情况下,我不会关注正在发生的事情.

我已经看到它将类型的最大大小定义为:

size_t max_size = (size_t)-1
Run Code Online (Sandbox Code Playgroud)

sas*_*hka 10

此代码(不必要地)转换-1size_t.最可能的意图是获得size_t 该系统的最大可能值.

虽然这段代码没有未定义的行为,但是这段代码很难看 - 在C++中你应该使用C语言std::numeric_limits<size_t>::max()并使用SIZE_MAX宏来获得size_t最大值.

  • 此代码具有明确定义的行为.您可能不喜欢它,但它受到标准的认可.(事实上​​,C和C++标准都是.)在C++(OP标签)中,你应该使用`std :: numeric_limits <size_t> :: max()` (2认同)