Страницы

Поиск по вопросам

четверг, 15 ноября 2018 г.

Как лучше привести к типу float?

Что лучше: -float(x) или float(-x), где x имеет тип unsigned short?


Ответ

Для unsigned short не имеет значения(при sizeof(short) < sizeof(int)), т.к. Ваше выражение float(-x) сначала приведёт x к int, сделает его отрицательным, а потом приведёт к float — никаких проблем.
Проблемы начнутся, если у вас тип unsigned int и «выше» — в этом случае вариант с float(-x) даст не то, что Вы ожидаете, т.к. сначала будет посчитан новый x исходя из формулы 2^n - x, а потом это будет преобразовано во float; где n это разрядность исходного типа(в нашем случае int).
Поэтому, во избежание проблем, лучше всегда придерживаться первого варианта(-float(x)), как наиболее безопасного и лучше отражающего намерение.

Комментариев нет:

Отправить комментарий