鱼C论坛

 找回密码
 立即注册
查看: 440|回复: 10

[已解决]结构体字节对齐

[复制链接]
发表于 2020-4-22 14:34:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
若有下列定义:
sruct date{
                int day;
                int month;
                int year;
};
struct person{
                     char name[12];
                     struct date birthday;
                     char sex;
};
则变量student在内存中所占的字节为 :
A.15     B.16      C.19     D.20


答案是C    想请教一下为什么是19    ?
char name[12]是  12B
struct date birthday是   12B   
加起来,不都已经24B了吗?
最佳答案
2020-4-22 14:41:27
int也不全是4个字节,与系统有关,也与编译器有关,可能是2字节,也可能是4字节
在这个题目中,显然int是2字节。

自己编程的时候,若严格需要2字节的话,一般不使用int,而是使用short,因为int可能不是2字节,而short绝对是2字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-22 14:41:11 | 显示全部楼层
哪里有student变量?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 14:41:27 | 显示全部楼层    本楼为最佳答案   
int也不全是4个字节,与系统有关,也与编译器有关,可能是2字节,也可能是4字节
在这个题目中,显然int是2字节。

自己编程的时候,若严格需要2字节的话,一般不使用int,而是使用short,因为int可能不是2字节,而short绝对是2字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 14:42:29 From FishC Mobile | 显示全部楼层
应该是25byte
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 14:43:42 From FishC Mobile | 显示全部楼层
sunrise085 发表于 2020-4-22 14:41
int也不全是4个字节,与系统有关,也与编译器有关,可能是2字节,也可能是4字节
在这个题目中,显然int是2 ...

啥系统啊,int俩字节?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 14:48:53 | 显示全部楼层
jkluoling1992 发表于 2020-4-22 14:43
啥系统啊,int俩字节?

有系统int两字节的,不然为什么会有long?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 14:53:48 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-22 14:48
有系统int两字节的,不然为什么会有long?

16位的系统没用过,工作只用到了32位和64位,这种题目也是绝了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 15:03:46 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-22 14:48
有系统int两字节的,不然为什么会有long?

一些微型的16位系统中int是两个字节。不过一般很少见到。
常见的32位或64位系统中int 都是4字节。
两字节int更多是因编译器不同导致的,例如单边机系统中的编译器下int就是2字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 15:15:41 | 显示全部楼层
sunrise085 发表于 2020-4-22 15:03
一些微型的16位系统中int是两个字节。不过一般很少见到。
常见的32位或64位系统中int 都是4字节。
两字 ...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-22 15:15:51 | 显示全部楼层
是的,在这道题里面int 按2字节来计算,12+6+1=19   
已经明白了,谢谢大家的回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-22 15:17:17 | 显示全部楼层
jkluoling1992 发表于 2020-4-22 14:53
16位的系统没用过,工作只用到了32位和64位,这种题目也是绝了

是的,很多的考题真的考的很老很不实用,但是就是会考到这个知识点,也是没办法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-29 01:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表