In this case, static_cast<> is an explicit type conversion. the standard has this to say about integral transformations in 4.7 / 3 "Integral transformations":
If the destination type is signed, the value does not change if it can be represented in the destination type (and bit width); otherwise, the value is determined by the implementation.
Since short guaranteed to be able to hold a value of 200 ( short must be at least 16 bits), for your specific example the answer is yes.
Various compilers adhere to this behavior quite well - this has been the case since the days before ANSI C and so much code depends on the behavior that compiler manufacturers seem reluctant to even warn about truncation.
Michael burr
source share