Neden bu 2 yerine 3 boyutlu bir yapı mı?
Bu yapı tanımlıyorum:
typedef struct
{
char A:3;
char B:3;
char C:3;
char D:3;
char E:3;
} col;
sizeof(col)
beni 3, ama 2 olması gerekmiyor mu? çıktısını ver Ben sadece bir unsuru açıklama, sizeof
2'dir. Neden anlamıyorum: 3 bit beş element 15 bit eşittir, ve 2'den daha az bir bayt.
"İç boyutu" böyle bir yapının bir tanımlama? bir Ben sadece bir açıklama istiyorum, bu dil benim derdim çünkü şu ana kadar, 2 boyutunu byte, 3 bekliyordum.
CEVAP
Çünkü kullanıyorsanız char
temel türü için alanlar, derleyici çalışır grup bite bayt, ve o zamandan beri bu yerleştirilemiyor fazla sekiz bit her bayt, tek mağaza iki alan başına bayt.
Yapı kullanır ve bitlerin toplamı o kadar fazla veri sığdırmak için ideal boyut short
olacak o kadar 15.
#include <stdio.h>
typedef struct
{
char A:3;
char B:3;
char C:3;
char D:3;
char E:3;
} col;
typedef struct {
short A:3;
short B:3;
short C:3;
short D:3;
short E:3;
} col2;
int main(){
printf("size of col: %lu\n", sizeof(col));
printf("size of col2: %lu\n", sizeof(col2));
}
Yukarıdaki kodu (64-bit benimki gibi platform için), gerçekten ikinci yapı için 2
verecektir. Bir şey daha büyük bir short
, yapı yaz en fazla bir elemanın kullanılan tip, yani aynı platform - yapı sona erecek olan dört beden için int
sekiz long
, vb.
Neden yapı ilk elemanın adresini kulla...
Neden nesne yerine bir işaretçi kendis...
Python katılın, neden dize.liste yerin...
Neden px yerine em?...
Neden İfade<İşlev<T> kullanırs...