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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值