Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Narrow conversation

414
19 августа 2012 года
CassandraDied
763 / / 24.05.2012
Доброго.
 
Код:
static float MaxX = 500.0;
float l1[3] = {(MaxX/100.)*Percentage, (MaxY/100.0)*Percentage, 0};
Цитата:

main.cpp|44|предупреждение: narrowing conversion of «((((double)MaxX) / 1.0e+2) * 3.0e+1)» from «double» to «float» inside { } [-Wnarrowing]|


Да где же тут double, если MaxX объявлена, как float? Это лечится явным приведением типов?

1
19 августа 2012 года
kot_
7.3K / / 20.01.2000
тут дело в операции деления. так как 100. - это тип double, то компилятор пытается выполнить приведение делимого к типу делителя. И соотвественно выдает предупреждение
414
19 августа 2012 года
CassandraDied
763 / / 24.05.2012
В warning'e написано же, что double - MaxX, а не 100.
UPD: гм, действительно, константа оказалась double. Плохой warning.
40K
19 августа 2012 года
D129
228 / / 18.04.2012
Цитата: CassandraDied
Плохой warning.


Хороший.
((((double)MaxX) / 1.0e+2) * 3.0e+1) - вот это все вот было вычислено как double. а не только MaxX.


А под to «float» имеется в виду float l1[3]
:-)

40K
19 августа 2012 года
D129
228 / / 18.04.2012
Цитата: CassandraDied
Что-то ужасное произошло



Люди отвечают.
Разве вы не этого хотели?
А по пяти строчкам оценить умственные способности могут немногие избранные...
Сообщения компилятора писали ну уж точно не идиоты, и называть их "плохими" - это не вежливо, как минимум.

Как в анекдоте -
- "До меня не дошло ваше сообщение!"
- "Прочтите его еще раз!"

40K
19 августа 2012 года
D129
228 / / 18.04.2012
Цитата: CassandraDied
Не подумай, что считаю тебя идиотом, но на счёт сообщения компилятора ты ошибся.



Ну я когда получаю сообщения от компилятора, стараюсь перестроить код так, чтобы не получать их вообще -

например, никакой надобности нет в использовании int16 - экономии памяти не будет, так как со времен даже 486 все читается-пишется блоками по 4 байта в целях увеличения производительности.

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

Что неправильно я понял в сообщении?

40K
19 августа 2012 года
D129
228 / / 18.04.2012
Цитата: CassandraDied
Нужно просто ответить на вопрос.



Кому нужно?
:-)

Понимаешь, в чем фокус - формой оплаты за ответ на форуме является возможность позанудствовать всласть.
Я же не нанятый тобой специалист, который делает то, что тебе нужно, и без лишних разговоров...

:-)

И судя по твоему эмоциональному высказыванию - я не один такой гад. "Тенденция, однако..." (с)

414
19 августа 2012 года
CassandraDied
763 / / 24.05.2012
Эт уже оффтоп пошёл. Хочешь поговорить - вличку.
7
28 августа 2012 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: D129
например, никакой надобности нет в использовании int16 - экономии памяти не будет

Формально—будет.Но,допустим,размер инструкций вырастет на 1 байт,т.к. добавится префикс 0x66 для работы со словами

414
28 августа 2012 года
CassandraDied
763 / / 24.05.2012
Вообще, это координаты окон, хотя у меня все координаты всех объектов почему-то float. Насколько знаю, OpenGL в своих внутренностях все числа с плавающей токой всё равно приводит к int'у, так что заменить float на int, хоть и не 16-ти битный, всё-таки смысл есть.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог