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数字,结果是不可预料的。