Это, по большей части, мой ответ, относящийся к этой теме, который сначала был задан на аналогичный вопрос здесь .
Все операции с целыми числами, меньшими, чем Int32, округляются до 32 бит до вычисления по умолчанию. Причина, по которой результатом является Int32, заключается в том, чтобы просто оставить его как есть после расчета. Если вы проверяете арифметические коды операций MSIL, то единственными целыми числовыми типами, с которыми они работают, являются Int32 и Int64. Это "по замыслу".
Если вы хотите получить результат обратно в формате Int16, это не имеет значения, если вы выполняете приведение в коде, или компилятор (гипотетически) запускает преобразование «под капотом».
Например, для выполнения арифметики Int16:
short a = 2, b = 3;
short c = (short) (a + b);
Два числа будут расширены до 32 бит, добавлены, а затем усечены до 16 бит, как и предполагал MS.
Преимущество использования коротких (или байтовых) данных заключается, прежде всего, в хранении данных в тех случаях, когда у вас есть большие объемы данных (графические данные, потоковая передача и т. Д.)