size_t的值无效

时间:2009-09-14 11:24:19

标签: c

人们用什么来表示size_t无效? -1不起作用,0可以是有效大小。

5 个答案:

答案 0 :(得分:10)

也许是((size_t)-1)

严格来说,它 是一个有效的大小,但是一旦你拥有了这个,你不可能需要任何其他的; - )

答案 1 :(得分:4)

如果你在谈论std :: string,那么size_t的无效值是std :: string :: npos。 通常你不应该使用-1,因为size_t是无符号的,你可以在编译器之间进行隐式转换时进行失败的比较。

话虽如此,std :: strings的npos设置为0XFFFFFFFFFFFFFFFF ...这是二进制等效值-1。它还会计算无符号size_t字段的最大允许值。

答案 2 :(得分:3)

基本上你不能。无论您使用什么价值都可能是有效的。最好传递一个标志,说它无效。

答案 3 :(得分:1)

你怎么做才能表示int无效? -1是int的有效值。这些类型没有指定“无效”值。您可以决定选择某个值(通常永远不会是变量所代表的值)来表示非法值,但这是您自己的定义,而不是人们通常使用的定义。

就个人而言,我不喜欢这种方式。我更喜欢创建另一个变量bool IsValid,它将说明该size_t变量的值是否有效。有时,创建一个类来封装它们甚至可能更好。

答案 4 :(得分:1)

我的版本是:

#include <limits>
#define invalid_index std::numeric_limits<size_t>::max()