Sdílet prostřednictvím


C++ Bit polí

Třídy a struktury mohou obsahovat členy, které zabíral méně úložného místa než integrálního typu.Tyto členy jsou určeny jako pole bitů.Syntaxe pole bit člen declarator následující specifikace:

declarator  : constant-expression

Poznámky

(Volitelné) declarator je název, kterým je přístup člena v programu.Musí být integrálního typu (včetně Výčtové typy).Konstantní výraz určuje počet bitů člen zaujímá ve struktuře.Anonymní bit pole – je bitové pole členy s žádný identifikátor – slouží pro odsazení.

[!POZNÁMKA]

Pole s nepojmenované bit 0 šířky vynutí zarovnání další bitové pole na další type hranice, kde type je typ člena.

Následující příklad prohlašuje strukturu, která obsahuje pole bit:

// bit_fields1.cpp
// compile with: /LD
struct Date {
   unsigned short nWeekDay  : 3;    // 0..7   (3 bits)
   unsigned short nMonthDay : 6;    // 0..31  (6 bits)
   unsigned short nMonth    : 5;    // 0..12  (5 bits)
   unsigned short nYear     : 8;    // 0..100 (8 bits)
};

Rozložení rámcové paměti objekt typu Date je znázorněn na následujícím obrázku.

Paměť rozložení objektu, datum

Obrázek rozložení paměti objektu datum

Všimněte si, že nYear je 8 bitů dlouhá a přetečení slovo hranice deklarovaný typ nepodepsané krátké.Proto je zahájena na začátku nového nepodepsané krátké.Není nutné, aby všechny bit pole vejde do jednoho objektu základní typ; nové jednotky úložiště jsou přidělena, podle počtu bitů v prohlášení.

Konkrétní společnosti Microsoft

Řazení dat deklarován jako bit pole je nízkými bit, jak je znázorněno na obrázku výše.

Konec konkrétní společnosti Microsoft

Pokud prohlášení struktury obsahuje nepojmenovanou pole o délce 0, jak ukazuje následující příklad

// bit_fields2.cpp
// compile with: /LD
struct Date {
   unsigned nWeekDay  : 3;    // 0..7   (3 bits)
   unsigned nMonthDay : 6;    // 0..31  (6 bits)
   unsigned           : 0;    // Force alignment to next boundary.
   unsigned nMonth    : 5;    // 0..12  (5 bits)
   unsigned nYear     : 8;    // 0..100 (8 bits)
};

rozložení paměti je, jak ukazuje následující obrázek.

Rozložení objektu Date s nulovou délkou bitové pole

Datum objekt rozložení 0 délka bitové pole

Podkladové typu bitové pole musí být integrálního typu, jak je popsáno v Základních typů.

Viz také

Referenční dokumentace

Třídy, struktury a odbory