收录日期:2018/08/17 01:42:33 时间:2016/05/22 08:22:39 标签:C语言
#include <stdio.h>
void main()
{ struct in
{char name;
 int phone;
  float score;
};
struct in student;
int a=sizeof(struct in);
 int b=sizeof(student.name);
 int c=sizeof(student.phone);
 int d=sizeof(student.score);

 a=a/2;
}
运行结果为:a=12;
b=1;
c=4;
d=4;
请问是怎么一回事,怎么总的是12阿
字节对齐
char name;后面补了3bytes,这是字节对齐搞的鬼
up
4 字节对齐撒

内存里面是这样排的
 name【】【】【】 (后补3个空字节)
 phone (占4个字节)
 score (占4个字节)

结果就是 4×3=12
对,是字节对齐的问题。
格式不好看
给你帖一下:

#include <iostream>
using namespace std;

int main()

struct in {
  char  name;
   int  phone;
     float  score;
  };

  struct in student;

  int a=sizeof(struct in);
   int b=sizeof(student.name);
    int c=sizeof(student.phone);
     int d=sizeof(student.score);

      cout << a << endl
           << b << endl
           << c << endl
           << d << endl
           << endl;
           
       system("PAUSE");
       return 0;
}
字节对齐的问题. 
如果你是说在a=a/2之后a还是12的话,那就要8字节对齐,倒是比较少见. 一般常见的是4字节对齐。你是什么系统?什么编译器?
请问有没有这一方面的资料啊
字节对齐
搜索一下,前面 N 多这样的帖子了
int  phone;

为什么是4????我感觉是2...-_-#...
看《深度探索C++对象模型》第27页。