首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用-1将所有位设置为真是否安全?

使用-1将所有位设置为真是否安全?
EN

Stack Overflow用户
提问于 2009-04-30 21:37:03
回答 12查看 40.1K关注 0票数 144

我看到这个模式在C& C++中用得很多。

代码语言:javascript
复制
unsigned int flags = -1;  // all bits are true

这是一种很好的可移植的实现方式吗?还是使用0xffffffff~0更好?

EN

回答 12

Stack Overflow用户

发布于 2009-04-30 21:42:35

坦率地说,我认为所有的fff都更具可读性。至于它是一个反模式的评论,如果你真的关心所有的位都被设置/清除,我认为你可能处于这样一种情况,你无论如何都会关心变量的大小,这将需要像boost::uint16_t这样的东西,等等。

票数 24
EN

Stack Overflow用户

发布于 2009-05-01 13:26:28

避免上述问题的一种方法是简单地这样做:

代码语言:javascript
复制
unsigned int flags = 0;
flags = ~flags;

轻便且切中要害。

票数 17
EN

Stack Overflow用户

发布于 2009-04-30 21:41:18

我不确定在C++中使用无符号整型作为标志是不是一个好主意。那么bitset之类的呢?

std::numeric_limit<unsigned int>::max()更好,因为0xffffffff假定无符号整型是32位整数。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/809227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档