{//в версии Borland C++ версии 3.1 обнаружена ошибка при
//использовании в вычислениях и преобразованиях вывода
//вещественных значений элементов структур . Чтобы обойти ошибку, //выбираем вещественное значение элемента union в простую
//вещественную переменную f (f=z.fr;), а затем используем f в
//выражениях и наоборот.
printf ("размер z=%d байта \n",sizeof(z));
// sizeof(z) вычисляет длину переменной z и printf распечатывает
//вычисленную длину
printf ("введите значение z.ir \n"); //выдача приглашения для ввода
scanf ("%d",&z.ir);//ввод целого значения в элемент z.ir
printf ("значение ir =%d \n",z.ir);//вывод значения z.ir
printf ("введите значение z.fr \n"); //приглашение для ввода
//вещественного значения
scanf ("%f",&f); //ввод вещественного значения в переменную f и
z.fr=f;//запись в z.fr (фактически реализован ввод: scanf ("%f",&z.ir);.
printf ("значение fr=%f \n",f); //вывод значения вещественной переменной
printf ("введите значение z.cr \n"); // приглашение на ввод информации
flushall(); // очистка буферов ввода-вывода.
//Такая очистка буфера здесь необходима, т.к. в буфере ввода остается
//символ конца строки от предыдущего ввода, который затем введется //спецификацией %c , вместо реально набираемого символа
scanf ("%c",&z.cr); //чтение символа, введенного с клавиатуры
printf ("значение сr=%c;\n",z.cr);//вывод значения символа
}
Пример сеанса работы с программой («Enter» - это нажатие этой клавиши):
размер z= 4 байта
введите значение z.ir
7 «Enter»
значение ir=7
Введите значение z.fr
З8.345678«Enter»
Значение fr=8.345678
Введите значение z/cr
P«Enter»
Значение cr= P;