11

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

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

size_t max_size = (size_t)-1
4

3 回答 3

14

此代码(不必要地)强制转换-1size_t. 最可能的意图是size_t 在这个系统上获得最大可能的价值。

虽然这段代码没有未定义的行为,但这段代码很丑 - 在 C++ 中你应该使用std::numeric_limits<size_t>::max(),而在 C 中使用SIZE_MAX宏正是为了获得size_t最大值。

于 2013-10-07T20:38:56.860 回答
1

(size_t)-1实际上相当于size_t(-1)

另请参阅以下问题c cast syntax styles

于 2013-10-07T20:39:21.450 回答
0

一些库方法有意返回(size_t)(-1)以指示错误情况。例如,来自 GNU libiconv 库的 iconv 方法。我认为这些函数不返回ssize_t(签名)返回值是有充分理由的,这将允许您直接检查 -1。

于 2018-02-06T22:26:47.440 回答