关于位图头文件在vc++6.0下丢失的两个字节
//以下是我用c语言在vc++6.0下写的一个程序的一部分,奇怪的是结构体的总字节数与单个字节之和差两个字节.请高手指教.
#include"stdio.h"
void main()
{
//BMP文件头
typedef struct tagBITMAPFILEHEADER { /* bmfh */
short bfType;
long bfSize;
short bfReserved1;
short bfReserved2;
long bfOffBits;
} BITMAPFILEHEADER;
printf("the size of long is:%d\n",sizeof(long));
printf("the size of short is:%d\n",sizeof(short));
printf("the total sum size of struct is:%d\n",2*sizeof(long)+3*sizeof(short));
printf("the toatal size of s is:%d\n",sizeof(BITMAPFILEHEADER));
}
//长整型为4个字节,短整型为2个字节,相加的和为:2*4+3*2=14,但为什么BITMAPFILEHEADER
//的大小为16字节呢
//更奇怪的是如果将第一个短整形注释掉,总合与单个变量的大小相加和吻合
//如果将其中任一一个长整型注释掉,总合与单个变量的大小相加之和差
问题点数:20、回复次数:3Top
1 楼sasdaa(被水淹死的鱼!)回复于 2006-07-02 18:58:09 得分 10
字节对齐!Top
2 楼yingge(...木脑壳...)回复于 2006-07-02 20:09:36 得分 10
如楼上所说,编译器都会采用字节对齐的方式的,楼主要看看书啊Top
3 楼jiayinjia1983116(嘉嘉)回复于 2006-07-02 21:14:18 得分 0
谢谢以上两位的回复,我在网上也搜索过了,确实如两位所说.Top




