我正在尝试在项目中设置一个简单的划分,在 STM32F10x 上我做了什么:
假设我有一个浮点变量:
float f =0.0;
.............
当我这样使用f
时:
f = 20/5 ;
程序无法使用除法结果f
的值,我在程序中的多个其他函数中使用该值,但它们都不起作用,这意味着我'没有出现错误,但程序无法运行。
但是当设置值时:
f = 4 ;
一切正常!
知道为什么吗?
我用过:
f =( float )20/5;
最佳答案
编译器将所有没有后缀的 float 视为double
。
这会在 STM32/ARM 上爆炸。
使用后缀,iow 20.0f
。
你的转换起作用的原因是因为结果可以在编译时确定。如果没有的话,它会再次爆炸。
关于无法在STM32上运行简单除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31136518/