home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Jason Aller Floppy Collection
/
98.img
/
LCNOW2.ZIP
/
EXAMPLES
/
UNION_2.C
< prev
next >
Wrap
C/C++ Source or Header
|
1988-08-02
|
1KB
|
54 lines
/*
* U N I O N _ 2
*
* Use a union to access the same areas of memory
* as either bytes or words at different times.
*/
/*
* Data structure definitions.
*/
struct bytes {
unsigned char low;
unsigned char high;
};
union word {
unsigned short word;
struct bytes byte;
};
int
main(void)
{
union word data;
unsigned short temp;
/*
* Save a number in memory as a word and print it
* in both decimal and hexadecimal formats.
*/
data.word = 1000;
printf("Word = %u (%04X hex)\n", data.word, data.word);
/*
* Print out the values of the low and high bytes
* of the word independently.
*/
printf("Low byte = %u (%02X hex)\n",
data.byte.low, data.byte.low);
printf("High byte = %u (%02X hex)\n",
data.byte.high, data.byte.high);
/*
* Print out the value of the word calculated from
* the high and low bytes of the memory word. The
* calculation is equivalent to (256 * high) + low.
*/
temp = (data.byte.high << 8) | data.byte.low;
printf("Calculated data word = %u (%04X hex)\n", temp, temp);
return (0);
}