C integer overflow behaviour when assigning to larger-width integers
If I execute the following code in C:
It correctly prints '-4000' as the result. However, I'm a little confused: shouldn't there be an arithmetic overflow when subtracting the larger unsigned integer from the other? What casting rules are at play here? This question seems a bit noobish, so any references would be greatly appreciated.
uint16_t a = 4000;
uint16_t b = 8000;
int32_t c = a - b;