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

xiaoxiao2021-02-28  138

链接: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
转载请注明原文地址: https://www.6miu.com/read-23518.html

最新回复(0)