I do understand why this produce compile time-error:
short x = 1;
short y = 2;
short z = x + y; // compile-time error
I've grasped why this runs without any issues:
short x = 1;
short y = 2;
x += y; // all right, because of c# specs section 7.17.2
But I've got no clue why this also works:
short x = (short)1 + (short)2;
I expected to get the same compile-time error as in the first example, but it runs successfully... Why?