|
![]() | 作者: changfeng [changfeng]
![]() |
登录 |
#include<stdio.h> int main() { struct data1 { char i; int ch; float f; }d1; union data2 { int i; char ch; float f; }d2; int num1=sizeof(d1); int num2=sizeof(d2); int num3=sizeof(int); printf("%d\t%d\t%d\n",num1,num2,num3); return 0; } 显示是 12 4 4 为什么不是 7 4 4 |
地主 发表时间: 05-03-21 22:49 |
![]() | 回复: 286 [unique] ![]() |
登录 |
C编译器有时为了自己读写方便,在编译时,会使结构中的某些位“对齐”,不足的补位,超过的补后以成倍的数量分配。 不同编译器结果不一样。所以你在TC下显示这个结果,在VC下也许就不是这样。 |
B1层 发表时间: 05-03-22 09:03 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号