In this case the static_cast<>
is an 'explicit type conversion. the standard has this to say about integral conversions in 4.7/3 "Integral conversions":
If the destination type is signed, the value is unchanged if it can be represented in the destination type (and bit-field width); otherwise, the value is implementation-defined.
Since short
is guaranteed to be able to hold the value 200
(short
must be at least 16 bits), then for your specific example the answer is yes.
Various compilers adhere to this behavior quite well - it's been that way since the pre-ANSI days of C, and so much code depends on the behavior that compiler vendors seem reluctant to even issue warnings about the possibility of truncation.