warning: #1035-D: single-precision operand implicitly converted to double-precision

../Core/Src/main.c(127): warning: #1035-D: single-precision operand implicitly converted to double-precision
在这里插入图片描述
需要在后面添加 f
如下:
在这里插入图片描述
原因分析:
这个警告信息 “#1035-D: single-precision operand implicitly converted to double-precision” 表示在代码中,有一个单精度(float)的运算数被隐式地转换成了双精度(double)类型。通常发生在混合使用单精度和双精度浮点数进行运算时。

在C或C++等语言中,当有一个单精度(float)的变量和一个双精度(double)的变量进行运算时,为了结果的精确性,单精度的变量会被自动转换为双精度,然后再进行运算。虽然这种转换在大多数情况下是安全的,但可能会导致性能上的轻微下降,特别是当你处理大量数据时。

例如:

float a = 3.14f;  
double b = 2.718;  
float c = a * b; // 这里a会被隐式转换为double,然后和b进行运算

在这个例子中,变量a是单精度浮点数,而变量b是双精度浮点数。当它们相乘时,a会被隐式转换为double类型,然后与b相乘。最后的结果是一个double类型,然后再次被隐式转换为float类型,赋值给变量c。

要解决这个问题:

  • 确保所有的运算数都是相同类型的,以避免隐式转换。
  • 显式地进行类型转换,以表明你的意图,但这样做需要谨慎,因为不恰当的转换可能导致精度损失。
    例如,如果确实想要结果以单精度形式存储,可以显式地将双精度变量转换为单精度:
float c = (float)(a * b);
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值