c++ - 隐式转换整数计算以在 C++ 中 float

标签 c++ floating-point integer implicit-conversion compiler-directives

是否有任何编译器具有指令或参数以将整数计算隐式转换为 float 。例如:

float f = (1/3)*5;
cout << f;

“f”是“0”,因为计算的常数(1、3、10)是整数。我想用编译器指令或参数转换整数计算。我的意思是,我不会像那样使用显式转换或“.f”前缀:

float f = ((float)1/3)*5;

float f = (1.0f/3.0f)*5.0f;

您知道任何 c/c++ 编译器有任何参数来执行此过程而无需显式强制转换或“.f”吗?

最佳答案

任何执行您想要的操作的编译器都将不再是符合标准的 C++ 编译器。整数除法的语义已明确指定(至少对于正数而言),您打算更改它。

这也很危险,因为它最终会应用于所有事物,并且您可能在某个时候拥有依赖于标准整数算术的代码,这将悄无声息地无效。 (毕竟,如果您有能够捕捉到这一点的测试,那么您大概会有能够捕捉到不需要的整数运算的测试。)

因此,我得到的唯一建议是编写单元测试、进行代码审查并尽量避免魔数(Magic Number)(而是将它们定义为 const float)。

关于c++ - 隐式转换整数计算以在 C++ 中 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2449578/

相关文章:

c++ - fmt和Howard Hinnant的日期:为什么从fmt::to_string “{}”? fmt和日期的最佳做法?

c++ - 一种解决 Qt 应用程序大小的方法

java - Java中float "1"和float "1f"有什么区别?

c - matlab和c的cos函数不同

Java parsefloat 在每个 CPU 上结果相同

c++ - 整数转换问题

string - Swift 和 XCode 6 - 将整数转换为字符串

c++ - 如何使用 C++ 在 SFML 中播放播放器

C++ 从牌堆中取出一张牌

Java:没有方法获取 Enum 常量的索引?