You local variable (V_0) is of type Int16. One of those 16 bits is used for the sign, leaving 15 for a maximum value of 2^15 or 0x7FFF.
You then create a Int32 value, set to 0x7FFF, and then assign it to the above local. Next you output the value.
Up to this point, everything is OK.
Next, you increment V_0 by one. As already noted, signed 16-bit values have a maximum value of 32767, so it naturally overflows to -32768.
In your next version, you use checked addition and checked conversion (back to an Int16). This check detects the overflow and throws the appropriate exception.
Good or bad, it really depends on what you are trying to do. Some algorithms rely on rollovers. Human arithmetic typically do not expect such behavior.