"Leaving parts of the language unspecified may seen odd or even dangerous, but it reflects C’s philosophy. One of the language’s goals is efficiency, which often means matching the way the hardware behaves. Some CPUs yield -1 when -9 is divided by 7, while others produce -2; the C89 standard simply reflects this fact of life."
—
K.N.King
C Programming- A modern approach second edition