下面的程序输出是啥,为啥呢???

来源:百度知道 编辑:UC知道 时间:2024/06/03 20:32:05
#include<iostream>
using namespace std;

struct info{
char name[8];
int age;
// struct addr address;
float pay;
unsigned state: 1;
unsigned ppay: 1;
}workers;

int main()
{

cout<<sizeof(info)<<endl;

return 0;

}

冒号 表示机构内位域的定义(即该变量占几个bit空间),state, ppay 都只占一个字节
char是一个字节,int 和float是四个字节,最大的是四个字节
则根据内存对齐,每四个字节对齐。name[8]的8个元素分别占8个字节,即两个四字节,age 和 pay 分别占四字节。然后 state 和 ppay 分别占一字节, 根据内存对齐,还要占两个字节跟上面的对齐
所以最后结果是20

20

我的编译器是V6,cpu是32位的,运行出来是20
内存补齐,8+4+4+4(后两个)=20