Member 13724225 Ответов: 1

Разница между добавлением двух коротких переменных и двух целочисленных переменных в java?


Я имею в виду

Короче=10;
Короткий b=10;
Короткий c=a+b;
В этом случае я получил ошибку компиляции, но в приведенном ниже коде

Int a=10;
Int b=10;
Int c=a+b;
Я не получил никакой ошибки никто не может объяснить подробно я так долго путался

Что я уже пробовал:

Я читал в Google, что если мы добавим две короткие переменные, то получим тип int
Но почему это невозможно при добавлении двух переменных int, преобразованных в типы переменных double или long

1 Ответов

Рейтинг:
1

PeejayAdams

Это выглядит как странность в спецификации языка Java:

"Если целочисленный оператор, отличный от оператора сдвига, имеет хотя бы один операнд типа long, то операция выполняется с использованием 64-битной точности, и результат числового оператора имеет тип long. Если другой операнд не является длинным, он сначала расширяется (§5.1.5) до типа long с помощью числового продвижения (§5.6).

В противном случае операция выполняется с использованием 32-битной точности, и результат числового оператора имеет тип int. Если какой-либо из операндов не является int, он сначала расширяется до типа int с помощью числового продвижения."

Что я и имею в виду:

короткие + байт = инт
короткие + короткие = инт
инт + короткий = инт
int + int = int
int + long = длинный
длинный + длинный = длинный

Честно говоря, я нахожу это немного непоследовательным, но именно так оно и определяется.