我正在使用STM32和GCC编译器,我做了以下划分:
uint8_t w, h;
w=2;
h=5;
float test = (w * h) / 8;
结果是test=1
为什么我错了?我无法理解这种行为。
有人能给我解释一下原因吗?
(w * h) / 8
是一个具有整数结果的整数表达式。
分配给float
是隐式转换,但不会恢复丢失的小数部分。
您可以通过确保至少一个操作数是浮点来使除法成为浮点表达式:
float test = (w * h) / 8.0f ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)