2013-10-03 4 views
2

кажется глупым вопросом, но я не мог найти ответ или, по крайней мере, не знал, как его сформулировать в Google.Тип возврата (длинный + длинный)

Когда мы добавляем два байта в Java, результатом является int.

Но как насчет двух длинных или длинного и целого? Те же вопросы для double и float. Я немного потерялся между всеми этими преобразованиями.

ответ

16

A long. Это зависит от §5.6.2 Binary Numeric Promotion, пункт 2:

  • Если один из операндов имеет тип double, другой преобразуется в double.
  • В противном случае, если один из операндов имеет тип float, другой преобразован в float.
  • В противном случае, если один из операндов имеет тип long, другой конвертируется в long.
  • В противном случае оба операнда преобразуются в тип int.

Вы получаете int при добавлении двух byte s из-за последнего правила.

+2

Чтобы добавить в KennyTM, если вы добавите двойной и плавающий вместе, вы получите двойной (как указано в первой палитре) –

+0

Спасибо за точный ответ! – SegFault

Смежные вопросы