If the destination type is unsigned, the resulting value is the least
unsigned integer congruent to the source integer (modulo where n
is the number of bits used to represent the unsigned type).
If the destination type is signed, the value is unchanged if it can be
represented in the destination type; otherwise,
the value is implementation-defined.