我在ARM处理器上运行C程序时遇到问题。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float f = -40.000000;
unsigned int a = f;
printf("\t Actual TX Power = %0.2f dBm \n",
(double)(int)a);
return 0;
}
输出:
on x86- Actual TX Power = -40.00 dBm
on ARM- Actual TX Power = -0.00 dBm
该值在x86上可以承受往返行程,但在ARM上不能幸免。
我无法找出问题所在。这可能是其背后的原因。
您的f
是有符号的值,因此将通过加UINT_MAX + 1
将其转换为无符号的整数,然后将使用无符号的值进行加法。