Цель этого кода, вероятно, округляется, как указано в других ответах.Но это, безусловно, очень плохой пример.Здесь происходит две вещи, которые, вероятно, первоначальный программист не намеревался:
- повышение до
int
и переназначение на int16_t
- смещение вправо
signed
значение
Повышение до int
(из-за +2
, что является просто int
) здесь плохо, потому что вы не знаете, какая точность int
на любомслучайная платформа заключается в том, что вы попадаете на.
Сдвиг вправо signed
значений зависит от компилятора, если значение отрицательное, поэтому результат может отличаться от платформы к платформе.