What is this code doing? (size_t)-1

前端 未结 3 1658
深忆病人
深忆病人 2021-02-14 08:12

Can someone explain what happens when size_t, or any other type identifier, is wrapped in parentheses. I know it is the old typecast syntax but in this context I don\'t follow w

相关标签:
3条回答
  • 2021-02-14 08:29

    Some library methods intentionally return (size_t)(-1) to indicate an error condition. For example, the iconv method from the GNU libiconv library. I assume there is some good reason why these functions don't return ssize_t (signed) return values, which would allow you to check for -1 directly.

    0 讨论(0)
  • 2021-02-14 08:42

    This code (unnecessarily) casts -1 to size_t. The most probable intent was getting the largest possible value of size_t on this system.

    Although this code doesn't have Undefined Behavior, this code is ugly - in C++ you should use std::numeric_limits<size_t>::max() and in C use SIZE_MAX macro for exactly a purpose of getting the largest size_t value.

    0 讨论(0)
  • 2021-02-14 08:47

    (size_t)-1 is in fact the equivalent of size_t(-1)

    See also the following question c cast syntax styles

    0 讨论(0)
提交回复
热议问题