这样做是否正确?
typedef unsigned int Index;
enum
{
InvalidIndex = (Index) -1
};
我读过它跨平台是不安全的,但我在很多“专业”代码中看到了这一点......
最佳答案
您阅读的内容可能是出于恐惧、不确定性和怀疑。无论你读到什么,作者可能认为 (unsigned)-1
正在下溢并可能在位表示不会恰好给你的系统上造成困惑 UINT_MAX
为你的麻烦。
但是,作者错了,因为标准保证无符号值在到达范围边缘时回绕。无论涉及什么位表示,(unsigned)-1
是 std::numeric_limits<unsigned>::max()
.期间。
不过,我不确定这样做有什么好处。您将获得那么大的最大值。如果没问题,我想您可以开始了。
关于c++ - 类型转换签名到无符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191508/