无法在STM32上运行简单除法

Eng*_*ine 2 c stm32

我试图在一个项目中设置一个简单的划分,在 STM32F10x 上我做了什么:

假设我有一个浮点变量:

float f =0.0; 

.............
Run Code Online (Sandbox Code Playgroud)

当我使用f这种方式时:

f = 20/5 ;
Run Code Online (Sandbox Code Playgroud)

该程序无法使用f除法结果的值,我在程序中的多个其他函数中使用该值,但它们都不起作用,这意味着我没有收到错误,但程序没有工作 。但当设置值时:

f = 4 ; 
Run Code Online (Sandbox Code Playgroud)

一切正常!
知道为什么吗?我用过: f = (float) 20/5 ;

lep*_*pie 6

编译器将所有不带后缀的浮点数视为double.

这在 STM32/ARM 上会崩溃。

使用后缀 iow 20.0f

你的强制转换之所以有效,是因为结果可以在编译时确定。如果没有的话,它会再次爆炸。