5

如果我需要获取最大值,将 -1 分配给 unsigned int 或其他 unsigned c++ 数据类型是否安全?

有没有什么情况下它不会给我一个无符号数据类型可以包含的最高值?

4

2 回答 2

13

为了安全起见,请使用std::numeric_limits<unsigned int>::max(). 将 -1 转换为 unsigned 可以在主流平台上工作,但标准 AFAIR 不能保证。

UPD:我会纠正自己。(无符号)-1 必须是 C 中的 UINT_MAX,请参阅此处的答案

于 2012-04-25T06:59:04.650 回答
-1

认为您可以在任何 2 的补码机器上使用 -1 (我认为这是当今的一切)。

于 2012-04-25T07:02:31.400 回答