有人可以解释当 size_t 或任何其他类型标识符被括在括号中时会发生什么。我知道这是旧的类型转换语法,但在这种情况下,我不了解正在发生的事情。
我已经看到它用于将类型的最大大小定义为:
size_t max_size = (size_t)-1
有人可以解释当 size_t 或任何其他类型标识符被括在括号中时会发生什么。我知道这是旧的类型转换语法,但在这种情况下,我不了解正在发生的事情。
我已经看到它用于将类型的最大大小定义为:
size_t max_size = (size_t)-1
此代码(不必要地)强制转换-1
为size_t
. 最可能的意图是size_t
在这个系统上获得最大可能的价值。
虽然这段代码没有未定义的行为,但这段代码很丑 - 在 C++ 中你应该使用std::numeric_limits<size_t>::max()
,而在 C 中使用SIZE_MAX
宏正是为了获得size_t
最大值。
(size_t)-1
实际上相当于size_t(-1)
另请参阅以下问题c cast syntax styles
一些库方法有意返回(size_t)(-1)
以指示错误情况。例如,来自 GNU libiconv 库的 iconv 方法。我认为这些函数不返回ssize_t
(签名)返回值是有充分理由的,这将允许您直接检查 -1。