gpt4 book ai didi

C++ boolean 数组作为位域?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:31 26 4
gpt4 key购买 nike

假设我需要在一个结构中存储 8 个 boolean 值,但我只想将它们一起使用 1 个字节,那么我可以这样做:

struct myStruct {
bool b1:1;
bool b2:1;
bool b3:1;
bool b4:1;
bool b5:1;
bool b6:1;
bool b7:1;
bool b8:1;
};

有了这个我可以做类似的事情

myStruct asdf;
asdf.b3=true;
asdf.b4=false;
if(asdf.b1)
...

到目前为止这是正确的吗? (我其实不知道,我以前从未使用过位域)

好的 - 但是否也可以创建一个包含 8 个 boolean 值的静态数组,这样它们将仅使用 8 位,但我仍然可以通过索引对它们进行寻址?

有点像

struct myStruct {
public:
bool b[8]:8;
};

也许吧? (有了这个,我得到一个错误 C2033)

感谢您的帮助!

最佳答案

我建议使用 std::bitset这样你就可以简单地声明:

std::bitset<8> asdf;

并将其与 [] 一起使用。

asdf[0] = true;
asdf[3] = false;

关于C++ boolean 数组作为位域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com