Это будет зависеть от контекста. В C / C ++ все промежуточные продукты, меньшие int
, повышаются до int
. Поэтому, если int
больше 16-битного, то результатом будет 32-битное целое число со знаком.
Однако, если вы присваиваете его 16-битному целому числу, оно усекается, оставляя только младшие 16 битов дополнения двух нового числа.
Таким образом, если ваше определение «результата» является промежуточным, сразу же после умножения, тогда ответ имеет размер int
. Если вы определите размер, как после того, как вы сохранили его обратно в 16-битную переменную, тогда ответом будет размер 16-битного целочисленного типа.