Нет, short и int являются обоими типами со знаком, поэтому этому способствует расширение знака, а не заполнение 0 байтов:
-32 short = 11111111 11100000
-32 int = 11111111 11111111 11111111 11100000
, оставляя MSB равным 1, т.е. отрицательным.
Youможет подделать поведение, которое вы ожидаете, сначала применив его без знака, например
printf("%d", (unsigned short)((short)(-32)));