powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как компилятор вычисляет тип математического выражения?
12 сообщений из 12, страница 1 из 1
Как компилятор вычисляет тип математического выражения?
    #38761375
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть абстрактное математическое выражение:

Код: java
1.
a+b-с/d 




Какой будет тип у выражения?

Неужели всегда самый "широкий" из присутствующих членов вне зависимости от операций?
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38761421
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой вариант вы предлагаете? А почему?
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38761485
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerКакой будет тип у выражения?
В JLS расписано.
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38761512
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

для 2х значений, объединенных бинарным оператором

1. Если хотя бы один из операндов имеет тип double, то второй тоже преобразуется к double.
2. В противном случае, если хотя бы один из операндов имеет тип float, то второй тоже преобразуется к float.
3. В противном случае, если хотя бы один из операндов имеет тип long, то второй тоже преобразуется к long.
4. В противном случае оба операнда преобразуются к int
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38762021
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner , javac на момент исполнения расчётов byte, short, int кастит всё в int. Поэтому не особо
парься с мелкими типами. Тоесть лишний раз даже нет смысла их декларировать если это не массивы.

Long идёт отдельной категорией.
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38762177
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я просто был удивлён, что после исполнения этой строчки

Код: java
1.
double d=1/2; 



значение переменной d = 0;


я думал, что если деление, то тип будет double
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38762185
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будет целочисленное деление 1/2 которое даст 0.
Потом кастинг в double.

Лучше так писать:
Код: java
1.
double d=1.0/2.0; 
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38762200
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerя думал, что если деление, то тип будет double
Почему должен быть double, а не float?
Тип деления int на int - int. Это по-моему логично. Научитесь читать JLS.
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38762211
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это тяжкое наследие старика Вирта. Чортов профессор запилил два деления.
Вещественное "/" и целочисленное DIV и вобщем заставил высрать немало
кирпичей при миграции с Pascal/Delphi на С++/Java где вывод типа совсем
другой.
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38762224
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

авторПочему должен быть double, а не float?
это не столь важно. на float я бы тоже согласился, пожалуй. Если надо обрубить дробную часть - касть к int.

авторНаучитесь читать JLS.

я не смог по этому вопросу jls нагуглить.
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38762279
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто тяжкое наследие старика Вирта.
Он то тут при чем, если в процессоре это разные команды?
Причем даже вещественное деление можно делать по разному.
Почему это нужно прятать от программиста?

Ну ладно в C++ - там операции можно назначить такого, что потом сам удивляться будешь.
...
Рейтинг: 0 / 0
Как компилятор вычисляет тип математического выражения?
    #38762282
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerя не смог по этому вопросу jls нагуглить.
Не надо гуглить JLS. Там содержания достаточно.

http://docs.oracle.com/javase/specs/jls/se8/html/index.html

4. Types, Values, and Variables
4.1. The Kinds of Types and Values
4.2. Primitive Types and Values

5. Conversions and Promotions - тоже близко к теме. Стоит обзорно прочесть.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как компилятор вычисляет тип математического выражения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]