uint最大整数根据I3E转成单精度浮点后16进制是0x4F7FFFFF,再转回整数是4294967040
为什么输出反而变大了?
#include <stdio.h>
int main(void) {
float f1 = 0xffffffff;
unsigned int umax = 0xffffffff;
printf(" u is:%u\n",umax); // u is:4294967295
printf("f1 is:%f\n",f1); //f1 is:4294967296.000000
return 0;
}
浮点数一般是 IEEE754 表示的,很多时候是不精确的。