A facility of some programming languages where the
TypeSystem can be intentionally subverted, typically to treat values of one type as if they were another.
For example, the following C struct...
union {
unsigned int bits;
float number;
}
...defines
bits and
number so they share the same memory. Thus, assigning a value to
number results in a value being in
bits. This can be usefully exploited to determine (for example) whether
number is negative or not by using
bits to examine the bit pattern of
number.