Why is the result type of short integer division in Java not a simple integer?

Consider this Code:

public class ShortDivision {
    public static void main(String[] args) {
        short i = 2;
        short j = 1;
        short k = i/j;
    }
}

Compiling this will cause errors

ShortDivision.java:5: possible loss of precision
found   : int
required: short
        short k = i/j;

Because the type of expression I / J is obviously int, it must be simplified

Why is the type of I / J not short?

Solution

From Java spec:

For binary operations, the small integer type is promoted to int and the result of the operation is int

Editor: why? The simple answer is that Java copied this behavior from c. a longer answer may be related to the fact that all modern machines perform at least 32-bit local computing. Some machines may actually be more difficult to perform 8-bit and 16 bit operations

See: or ing bytes in c# gifts int

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>