Because the arithmetic expression on the right-hand side of the assignment operator evaluates to int by default.
Jiten said:
(Sun, Sep 9, 2012 01:36:18 AM)
For short and byte types compiler asks for explicit conversion.
The reason is its rule but with common sense that any mathematical calculations can go beyond byte and short types.