gpt4 book ai didi

c++ - 如何在不检查每个元素的情况下立即检查结构的零值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:36 25 4
gpt4 key购买 nike

假设我有一个 byte 结构,如下所示:

struct one_byte
{
char b1 : 1,
b2 : 1,
b3 : 1,
b4 : 1,
b5 : 1,
b6 : 1,
b7 : 1,
b8 : 1;
}foo;

在某些情况下,我需要检查 (foo == 0),然后我必须执行八个命令:

if(foo.b1 == 0 &&
foo.b2 == 0 &&
foo.b3 == 0 &&
...and so on

有没有什么轻便便捷的方法,只用一个命令就可以立即检查零值?我试过函数和模板,它们执行起来很慢。我试过 union,我的编译器不支持 bit[array]...

最佳答案

使用union , 这就是它的目的

union {
struct {
char b1:1,b2:1,b3:1,b4:1,b5:1,b6:1,b7:1,b8:1;
} bits;
unsigned char byte;
} u;

然后你可以直接分配字节

u.byte = 15;

或单独的位

u.bits.b3 = 1;

例子

int main() {
u.byte = 0;
printf("%x\n", u.byte);
u.bits.b3 = 1;
u.bits.b4 = 1;
printf("%x\n", u.byte);
return 0;
}

会输出

0
c // 12 in decimal, since b3 and b4 are set to 1

关于c++ - 如何在不检查每个元素的情况下立即检查结构的零值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14805482/

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