C - 错误:二进制>>的操作数无效(具有"float"和"int")



我正在尝试在C中将float强制转换为逐位int。以下是我的代码片段:

write_eeprom(INDEX_CONFIG_TEMPERATURE_OFFSET_HIGH_INT, (unsigned int) (temperature_offset>>16));
write_eeprom(INDEX_CONFIG_TEMPERATURE_OFFSET_LOW_INT, (unsigned int) (temperature_offset));

我得到以下错误:

error: invalid operands to binary >> (have 'float' and 'int'),

在尝试编译时。这里,temperature_offset是一个浮点类型,我试图将其转换为高int和低int,就像我试图将数据保存在EEPROM中的16位块中一样(就像我使用的是16位微控制器一样(。我知道‘>gt;'不适用于浮点类型。如何解决此问题?

创建一个单独的unsigned int变量,并将浮点值memcpy放入其中,然后进行此操作。

unsigned int temperature_offset_int;
memcpy(&temperature_offset_int, &temperature_offset, sizeof(temperature_offset));
write_eeprom(INDEX_CONFIG_TEMPERATURE_OFFSET_HIGH_INT, temperature_offset_int >> 16);
write_eeprom(INDEX_CONFIG_TEMPERATURE_OFFSET_LOW_INT, temperature_offset_int & 0xffff);

相关内容

  • 没有找到相关文章

最新更新