sizeof(int)的值是多少,-2L*sizeof(int)的值又是多少

#include#includemain(){ FILE*fp;int i,a[4]={1,2,3,4},b; fp=fopen("data.dat","wb"); for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp); fclose(fp);fp=fopen("data.dat","rb");fseek(fp,-2L*sizeof(int),SEEK_END); fread(&b,sizeof(int),1,fp); fclose(fp); printf("%d\n",b);}为什么最后的输出值是3

sizeof(int):表示int类型所占的字节数,32位及其中为4,fwrite(&a[i],sizeof(int),1,fp);也就是将a[i]的四个字节写到文件中,共写了4*4=16个字节;
-2L*sizeof(int)=-2*4=-8;也就是从SEEK_END倒退8个字节,正好是a[2]写入文件的起始字节地址,fread(&b,sizeof(int),1,fp);指从这个地址读入四个字节,这号把a[2]读到b里面,所以b=3;
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-07

    sizeof(int) = 4 , 表示int占用四个字节;

    -2L*sizeof(int) = -8L , 其中L表示long类型。

相似回答