c语言在16位机上结构体是怎么分配内存的呢?

我的电脑是64位
struct{int c; char ch; float f;}b; 后sizeof(b)得到的是12 我知道是由偏移量➕填充字节得来的
但是在16位机上是怎么分配的呢 (练习题结果居然是7!?)

int类型跟机器的位数有关,16位下int是2字节,char1字节,float固定4字节
可能16位下没有进行字节对齐吧,不然不可能是7

16位下,int是2字节,char是1字节,float是4字节(其它位机器不变)
2+1+4=7