假设以下代码运行环境为32位系统,其中,__attribute__((ipacked))的作用是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。 代码段1: struct student1{ char name[10]; long sno; char sex; float score[4]; }__attribute__((packed)) *p1, a1, b1; 代码段2: union student2{ char name[10]; long sno; char sex; float score[4]; } *p2, a2, b2; sizeof(struct student1)、sizeof(union student2)的结果分别是__________。
【正确答案】
C
【答案解析】解析:本题考查程序开发的基础知识。 题目中studentl是一个结构体,sizeof(struct studentl)结果为结构体student1所有元素字节数之和,因此sizeof(struct studentl)结果为:10+4+1+16=31字节。 题目中student2是个联合,sizeof(union student2)结果是联合student2中最长一个元素的字节数。因此sizeof(union student2)结果为:16字节。