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

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

我已经看到这种模式在C&C ++中使用了很多。

unsigned int flags = -1;  // all bits are true

这是一个很好的便携式方法吗?或正在使用0xffffffff~0更好?



尚方宝剑之说
浏览 427回答 3
3回答

喵喵时光机

unsigned int flags = -1; 是便携式的。unsigned int flags = ~0; 不可移植,因为它依赖于二进制补码表示。unsigned int flags = 0xffffffff; 不可移植,因为它采用32位整数。如果要以C标准保证的方式设置所有位,请使用第一个。

慕侠2389804

坦率地说,我认为所有的fff都更具可读性。至于它是反模式的评论,如果你真的关心所有的位都被设置/清除,我会争辩说你可能处于这样一种情况,你无论如何都要关心变量的大小,这会要求像boost这样的东西:: uint16_t等
打开App,查看更多内容
随时随地看视频慕课网APP