我知道将整数转换为浮点数(反之亦然)相当昂贵。但是,编译器是否会在编译时自动为代码中的常量执行此操作?例如,两者之间有什么区别吗?
float y = 123;
float x = 1 / y;
和
float y = 123.f;
float x = 1.f / y;
我看到一些执行后者的代码,但我不确定它是出于优化还是安全问题(即,即使 y 恰好是 int,也要确保除法是浮点数)。
我正在使用 gcc(因为答案可能是特定于编译器的。)
此外,任何指向编译器通常可以优化和不能优化的列表的指针都会受到赞赏。谢谢!