The result of the operation short + shortis defined as int. In the first case, the compiler goes ahead and applies the cast (short)to the result of the increment, but not in the second.
short myShort = 1;
int resultA = myShort + myShort;
short resultB = myShort++;
short resultB = (short)(myShort + 1);
, , 7.3.6.2 # 4.0, ( a = b + c;), 7.6.9, - .