Look up "integer promotion in C" and "type casting in C". The rules will be followed.
Unless you have an operation which implicitly gets promoted to a larger type of variable, or explicitly cast it into a larger type, C will readily allow you to overflow an integer and you'll get the resulting wraparound. The processor has no protection against this.
An overflow would be if the operation's result would not fit into the destination variable. A signed 16-bit int is from -32768 to 32767.
Note that the left-hand side of the equation- the destination- does not dictate the type of the calculation. The right side does. It's possible to overflow the type used on the right even though the destination on the left can contain the result.
Note that it's fully possible to write a complex equation with multiple ops and parenthesis on the right side and get screwed up because ONE stage of the calculation overflows the variable size at some point, even though the ultimate result, on a calculator, is within the -32768 to 32767 range.