我看到这个模式在C& C++中用得很多。
unsigned int flags = -1; // all bits are true
这是一种很好的可移植的实现方式吗?还是使用0xffffffff
或~0
更好?
发布于 2009-04-30 21:42:35
坦率地说,我认为所有的fff都更具可读性。至于它是一个反模式的评论,如果你真的关心所有的位都被设置/清除,我认为你可能处于这样一种情况,你无论如何都会关心变量的大小,这将需要像boost::uint16_t这样的东西,等等。
发布于 2009-05-01 13:26:28
避免上述问题的一种方法是简单地这样做:
unsigned int flags = 0;
flags = ~flags;
轻便且切中要害。
发布于 2009-04-30 21:41:18
我不确定在C++中使用无符号整型作为标志是不是一个好主意。那么bitset之类的呢?
std::numeric_limit<unsigned int>::max()
更好,因为0xffffffff
假定无符号整型是32位整数。
https://stackoverflow.com/questions/809227
复制相似问题