例如

size_t x = -1u;

if (x == -1u)
    ...

有效的?

如果有效,它将阻止警告。
当然,在32位系统上,x应该为0xffffffff,而在64位系统上
系统应为0xffffffffffffffffff。

-乔臣

最佳答案

1u的类型为unsigned int。然后使用一元-运算符将其取反。行为如下:



因此,-1u可以保证为您提供unsigned int可代表的最大值(value)。

要获得可由任意无符号类型表示的最大值,可以将-1强制转换为该类型。例如,对于std::size_t,请考虑
static_cast<std::size_t>(-1)

10-04 14:55