gpt4 book ai didi

c++ - 位成员倒序?

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

<分区>

我有以下代码:

#include <iostream>
#include <bitset>

#pragma pack(1)
typedef uint8_t flag_t;
typedef struct flag_struct_t {
flag_t f1:1;
flag_t f2:2;
flag_t f3:2;
flag_t f4:2;
flag_t f5:1;
} flag_struct_t;


int main() {
const uint8_t flagValue = 96;
std::bitset<8> mybits(flagValue);
const flag_struct_t flag = *reinterpret_cast<const flag_struct_t*>(&flagValue);
std::cout << "f2 = " << (uint16_t)flag.f2 << std::endl;
std::cout << "f3 = " << (uint16_t)flag.f3 << std::endl;
std::cout << "f4 = " << (uint16_t)flag.f4 << std::endl;
std::cout << "bitset = " << mybits << std::endl;
std::cout << "size of flag_struct_t = " << sizeof(flag_struct_t) << std::endl;
}

#pragma pack()

输出是:

$ ./mybitset 
f2 = 0
f3 = 0
f4 = 3
bitset = 01100000
size of flag_struct_t = 1

似乎结构成员的顺序已从 f1, f2, f3, f4 反转为 f4, f3, f2, f1

这是为什么?

如果重要的话,我正在使用 GCC 8。

谢谢!

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