It result in things highly inconsistent on modern 64-bit machines:
For example, char/short are automatically promoted to int or unsigned int when an operation is performed on them, but this doesn't happen between int and long.
Simple things like adding two int16_t together to get a int16_t in return is really hard: you need a mask and a extra explicit cast, and you rely on the compiler being smart enough to understand what you are doing and to emit just the instruction you want.
But you don't need to do the same with int32_t, because reasons.
This is a bad default behavior, as it doesn't match either the intuition or underlying hardware, it is inconsistent across all integer types, and to understand why it works that way you need to understand how computers works 30 years ago.
D supporting C integer promotion might be a good thing for portability, but that's it.