Egyetlen bit elérése
A C-ben egy másik típus van definiálva a különböző típusú változók tárolására a memóriában. Ez az egyesítés. A csatlakozás ugyanúgy deklarálódik, mint a struktúra, például:
Ez a csatlakozás nem tartalmaz semmilyen változót. Meghatározza az összekapcsolási mintát.
Kijelenthet egy változót:
union u alpha, béta;
A változókat a sablonokkal egyidejűleg deklarálhatja. A memóriában lévő típusú univerzális változó struktúrájától eltérően csak annyit kell megadni, hogy a bájtokban a legnagyobb méretű szakszervezeti elemek ki vannak osztva. Tehát az alfa változó négy bájtra osztható, az i-2 byte változó esetén; változó ch - 1 bájt; az 1 - 4 bájtra változó;
Az egyes elemek használatának szintaktikája ugyanaz, mint a szerkezetek esetében:
Az egyesítéshez a művelet -> is megengedett, ha a mutató használatával elérjük a szakszervezetet.
6.3. Bitmezők
A szerkezet bitmezőket tartalmazhat. Az aláírt és az alá nem írt típusok teljes összetevőit 1-16 bit szélességű bitmezőként deklarálhatják. A bitmező szélessége és opcionális azonosítója a következőképpen van megadva:
típus <идентификатор>: szélesség;
ahol a típus char, unsigned char, int vagy unsigned int.
Ha a bitmező-azonosító el van hagyva, a szélesség-kifejezés által meghatározott bitek száma a memóriában van elosztva, de a mező nem áll rendelkezésre a program számára. Ha a szélesség értéke nulla, a következő mező a következő memóriaszóval kezdődik.
A struktúrában megadott mezők esetében a következő memóriaelosztás van megadva:
15 14 12 11 10 9 8 7 6 5 4 3 2 1 0
x x x x x x x x x x x x x x x
A teljes mezők 2-es kiegészítéseként tárolódnak, a legrégebbi bit pedig a legmagasabb. Az int típusú bitmező (például aláírás) esetén a legjelentősebb bit az aláírással értelmezhető. Például az 1-es szélességű aláírt int mező csak -1 és 0 lehet, mivel az 1. bitmintát -1-nek fogják értelmezni.
A program eredménye: -1.
Más programozási nyelvektől eltérően a C nyelv egy vagy több bitet biztosít egy bájtban vagy egy szóban. Ennek előnyei vannak. Ha sok változó csak két értéket vesz fel (ilyen változókat zászlóknak neveznek), akkor 1 bit használható.
struct struktúra_neve
típusnév 1: hosszúság bitekben;
típusnév 2: hosszúság bitben;
típusnév N: hosszúság bitben;
aláírás nélküli one_bit. 1;
akkor obj esetén 8 bitet osztanak ki, de csak az első bitet fogja használni.
6.5. Típusok átnevezése - typedef
A C nyelv segítségével a typedef segítségével új nevet adhat meg a meglévő változókhoz. Ez nem hoz létre új adattípust.
typedef char SIMBOL;
typedef unsigned UNSIGN;
typedef float real;
Egy tipizált operátort gyakran használnak struktúrák használatával:
typedef struct st_tag
Most használhatja a