Продвижение - разновидность неявного преобразования типов. Перед тем как выполнить арифметическую операцию производится продвижение: короткие типы данных (короче чем int) продвигаются до signed int (точнее, некоторые и до unsigned int, но не unsigned char).
x= (signed int)2
-x= 2
(long)-x= -2