Этот вопрос демонстрирует очень интересное явление: денормализованные числа с плавающей точкой замедляют код более чем на порядок.
Поведение хорошо объясняется в принятом ответе. Тем не менее, есть один комментарий с 153 отзывами, на который я не могу найти удовлетворительный ответ:
Почему в этом случае компилятор просто не удаляет + / - 0?!? - Майкл Дорган
Примечание: у меня сложилось впечатление, что 0f является/должно быть точно представимым (более того - это двоичное представление должно быть всеми нулями), но я не могу найти такое утверждение в стандарте c11.Цитата, доказывающая это, или аргумент, опровергающий это утверждение, было бы очень желательно.Несмотря на это, Майкл вопрос является основным вопросом здесь.
Реализация может дать ноль и значения, которые не являются числами с плавающей точкой (например, бесконечности и NaN), знак или могут оставить их без знака.