这段代码是什么意思?怎么就输出结果是12了?

#include <iostream>
#include <string.h>
using namespace std;
struct
{
    int i;
    char c;
    float a;
} test;
int main()
{
    cout << sizeof(test);
}

内存对齐及其作用;

[(https://blog.csdn.net/chy19911123/article/details/48894579 "")

这个涉及到一个结构体字节对齐规则的问题,你可以上网搜索一下 #pragma pack,你可以了解一下的。如果你要按数据类型本身所占的字节大小来控制
可以使用下面的方式:

#pragma pack(1)
struct
{
    int i;
    char c;
    float a;
} test;
#pragma pack()

至于其中的原因,你可以自行查阅资料。