C/C++学习(3)#pragma pack(4) vs. #pragma pack(8)

来源:互联网 发布:tp5框架架构源码下载 编辑:程序博客网 时间:2024/05/17 21:35


链接:https://www.nowcoder.com/questionTerminal/e2ef573a02bd46659fd683a805284c80来源:牛客网struct One{    double d;    char c;    int i;}struct Two{    char c;    double d;    int i;}

在#pragma pack(4)和#pragma pack(8)的情况下,结构体的大小分别是
  • 16 24,16 24
  • 16 20,16 20
  • 16 16,16 24
  • 16 16,24 24


题目解析:


链接:https://www.nowcoder.com/questionTerminal/e2ef573a02bd46659fd683a805284c80
来源:牛客网

(实际占位用下划线表示,补位没有下划线)
#pragma pack(4)时:
One的大小:
口口口口 d
口口口口 d
口口口   c (补3位对齐)
口口口口 i
共:4+4+4+4 = 16;
Two的大小:
口口口 c (补3位对齐)
口口口口 d
口 口口口 d
口口口口 i
共:4+4+4+4 = 16;
================================
#pragma pack(8)时:
One的大小:
口口口口 口口口口 d
口 口口口 口口口口 c占1位,i紧挨着占4位,再补3位对齐
共:8+8 = 16;
Two的大小:
口口口口口口口    c(补7位对齐)
口口口口 口口口口 d
口口口口口口口 i (补4位对齐)
共:8+8+8 = 24;
选C



0 0