Bir sendikanın boyutunu şu şekilde yazdığımda:Sendikamın büyüklüğü neden beklediğimden daha büyük?
union u {
char c[5];
int i;
} un;
union u {
char c[5];
int i;
} un;
bunu kullanarak:
int _tmain(int argc, _TCHAR* argv[])
{
printf("size of union = %d ",sizeof(un));
return 0;
}
Visual C++ kullanarak 8 cevabı alıyorum, ama bekledim 5. Neden?
Aynı örnek için,
int i1 = 0x98761234;
un.i = i1;
printf("\n un.c[0] = %x ",un.c[0]);
printf("\n un.c[1] = %x ",un.c[1]);
printf("\n un.c[2]= %x ",un.c[2]);
printf("\n un.c[3] = %x ",un.c[3]);
printf("\n un.c[4] = %x ",un.c[4]);
printf("size of union = %d ",sizeof(un));
un.c[0] = 34;
un.c[1] = 12;
un.c[2] = 76;
un.c[3] = ffffff98;
gibi sonuçları aldım neden 6fs un.c [3]
için birkaç bayt ekler büyük üye 5 bayt olan c. Derleyici, dolgu ekleyerek bunu 8'e kadar çevirir. Sistem 8 baytlık tamsayı kullanıyorsa, birleştirme boyutu için 8 kullanılır. –
@Brian sana "büyük üyesi türü" yorumunu kısa bir süre önce benim cevap değişti, bir int daha net göstermek için. –
Ben hala cevap net veya doğru olduğunu düşünmüyorum, bilmiyorum. En büyük üyenin bir int olduğunu söylüyorsun, ama değil. 5 karakterlik bir dizidir. 5> 4 yana o 8. –