将-1分配给unsigned int以获取最大值是否安全?

时间:2012-04-25 06:56:54

标签: c++ unsigned

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

是否存在无法给出无符号数据类型可以包含的最高值的情况?

2 个答案:

答案 0 :(得分:12)

为了安全起见,请使用std::numeric_limits<unsigned int>::max()。 将-1转换为unsigned将适用于主流平台,但标准AFAIR无法保证。

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

答案 1 :(得分:0)

认为你可以在任何2的补充机器上使用-1(我认为现在是一切)。