float使用0xFF

1. float f = 0xFFFFFFFF;

这一句完全是错误的用法,它不会使f变量内存变为4个0xFF,因为0xFFFFFFFF根本就不是有效的float数值,编译器无从处理,如果用printf('%x')打印f的值,结果一定不是0xFFFFFFFF。

2. 正确的用法

    float f;
    unsigned char b[4] = {0xFF,0xFF,0xFF,0xEF};
    memset(&f, 0xFF, sizeof(f));// 正确的置为0xFF的方法
    memcmp(&f, b, sizeof(f));// 正确的判断内存区是否是0xFFFFFFFF的方法

或者

   unsigned int c = 0xFFFFFFFF;

   memcmp(&f, &c, sizeof(f));

3. 为什么fabs(f - 0xFFFFFFFF)是错误的用法,与第一条一样,0xFFFFFFFF根本不是有效的float,在计算fabs时,编译器会把0xFFFFFFFF弄成一个它认识的float数字,结果是不可预料的。

原文地址:https://www.cnblogs.com/any91/p/6689481.html