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''.