Программирование на языке высокого уровня. Марапулец Ю.В. - 59 стр.

UptoLike

Составители: 

case CHECK: cout << "Оплата чеком: "<< info.check; break;
}
return 0;
}
Объединение часто используют в качестве поля структуры, при этом в структуру
удобно включить дополнительное поле, определяющее, какой именно элемент объеди-
нения используется в каждый момент. Имя объединения можно не указывать, что позво-
ляет обращаться к его полям непосредственно:
#include <iostream.h>
int main()
{
enum paytype {CARD, CHECK};
struct{
paytype ptype;
union{
char card[25];
long check;
};
} info;
... /* присваивание значения info */
switch (info.ptype)
{
case CARD: cout << "Оплата по карте: " << info.card; break;
case CHECK: cout << "Оплата чеком
: " << info.check; break;
}
return 0;
}
Объединения применяются также для разной интерпретации одного и того же би-
тового представления (но, как правило, в этом случае лучше использовать явные опера-
ции преобразования типов). В качестве примера рассмотрим работу со структурой, со-
держащей битовые поля:
struct Options
{
bool centerX:1;
bool centerY:1;
unsigned int shadow:2;
unsigned int palette:4;
};
union
{
unsigned char ch;
Options bit;
}option = {0xC4};
cout << option.bit.palette;
option.ch &= 0xF0; // наложение маски
59
              case CHECK: cout << "Оплата чеком: "<< info.check; break;
       }
       return 0;
}

     Объединение часто используют в качестве поля структуры, при этом в структуру
удобно включить дополнительное поле, определяющее, какой именно элемент объеди-
нения используется в каждый момент. Имя объединения можно не указывать, что позво-
ляет обращаться к его полям непосредственно:

#include 
int main()
{
       enum paytype {CARD, CHECK};
       struct{
                paytype ptype;
                union{
                       char card[25];
                       long check;
                };
       } info;
       ... /* присваивание значения info */
       switch (info.ptype)
       {
                case CARD: cout << "Оплата по карте: " << info.card; break;
                case CHECK: cout << "Оплата чеком: " << info.check; break;
       }
       return 0;
}

     Объединения применяются также для разной интерпретации одного и того же би-
тового представления (но, как правило, в этом случае лучше использовать явные опера-
ции преобразования типов). В качестве примера рассмотрим работу со структурой, со-
держащей битовые поля:

struct Options
{
        bool centerX:1;
        bool centerY:1;
        unsigned int shadow:2;
        unsigned int palette:4;
};
union
{
        unsigned char ch;
        Options bit;
}option = {0xC4};
cout << option.bit.palette;
option.ch &= 0xF0; // наложение маски




                                            59