结构体字节对齐
若有下列定义:sruct date{
int day;
int month;
int year;
};
struct person{
char name;
struct date birthday;
char sex;
};
则变量student在内存中所占的字节为 :
A.15 B.16 C.19 D.20
答案是C 想请教一下为什么是19 ?
char name是12B
struct date birthday是 12B
加起来,不都已经24B了吗? 哪里有student变量?{:9_241:} int也不全是4个字节,与系统有关,也与编译器有关,可能是2字节,也可能是4字节
在这个题目中,显然int是2字节。
自己编程的时候,若严格需要2字节的话,一般不使用int,而是使用short,因为int可能不是2字节,而short绝对是2字节。 应该是25byte
sunrise085 发表于 2020-4-22 14:41
int也不全是4个字节,与系统有关,也与编译器有关,可能是2字节,也可能是4字节
在这个题目中,显然int是2 ...
啥系统啊,int俩字节? jkluoling1992 发表于 2020-4-22 14:43
啥系统啊,int俩字节?
有系统int两字节的,不然为什么会有long? 永恒的蓝色梦想 发表于 2020-4-22 14:48
有系统int两字节的,不然为什么会有long?
16位的系统没用过,工作只用到了32位和64位,这种题目也是绝了 永恒的蓝色梦想 发表于 2020-4-22 14:48
有系统int两字节的,不然为什么会有long?
一些微型的16位系统中int是两个字节。不过一般很少见到。
常见的32位或64位系统中int 都是4字节。
两字节int更多是因编译器不同导致的,例如单边机系统中的编译器下int就是2字节。 sunrise085 发表于 2020-4-22 15:03
一些微型的16位系统中int是两个字节。不过一般很少见到。
常见的32位或64位系统中int 都是4字节。
两字 ...
嗯 是的,在这道题里面int 按2字节来计算,12+6+1=19
已经明白了,谢谢大家的回复 jkluoling1992 发表于 2020-4-22 14:53
16位的系统没用过,工作只用到了32位和64位,这种题目也是绝了
是的,很多的考题真的考的很老很不实用,但是就是会考到这个知识点,也是没办法
页:
[1]