lloyd (06.02.2018 07:46, просмотров: 109) ответил Ксения на Double-константы вполне подходят для флоат-операций. Да и вообще, при наличии в числе десятичной точки концовку F или D можно опускать, не указывая на принадлежность явно - все равно лишние знаки будут потеряны при конверсии в бинарную форму без
> при наличии в числе десятичной точки концовку F или D можно опускать Авотхрен. Если принудительно не заставить компилятор считать все во флоатах, то операция
float a = my_float_b * 2.5;
перегонит my_float_b в double, произведет программное умножение, перегонит результат во float и только потом произведет присваивание.
Разумеется мы говорим про ABI, в которых double 64-битный.
В то же время запись
float a = my_float_b * 2.5F;
Будет явно говорить, что работаем мы тут во float и никаких конверсий делать нельзя.
Для типозависимого кода есть следующие пути
1. Объявить макросом c_const(x), который будет кастовать число к нужному нам типу
2. Использовать tgmath.h вместо math.h
Так что, Ксения, -Wdouble-promotion (не знаю, как он у вас яре называется) вам в помощь. Если не хотите диких тормозов на DSP-операциях - нужно внимательно следить за преобразованиями типов