加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用memcpy避免陷阱表示

发布时间:2020-12-16 05:30:45 所属栏目:百科 来源:网络整理
导读:请考虑以下代码: float float_value = x; // x is any valid float valueint int_value = 0;size_t size = sizeof(int) sizeof(float) ? sizeof(int) : sizeof(float);memcpy(int_value,float_value,size); 据我所知,这可能会导致陷阱表现.我的问题: 这是
请考虑以下代码:
float float_value = x; // x is any valid float value
int int_value = 0;
size_t size = sizeof(int) < sizeof(float) ? sizeof(int) : sizeof(float);
memcpy(&int_value,&float_value,size);

据我所知,这可能会导致陷阱表现.我的问题:

这是真的吗
>如果不是,为什么?
>如果没有,是否有另一种避免陷阱表现的方法?

解决方法

受制裁的方式不会产生任何陷阱的表现
unsigned char obj[sizeof float];
memcpy(obj,sizeof float);

然后可以使用对象表示的字节来构建您想要的int.

但是如斯蒂芬·佳能所提到的使用固定宽度整数更好 – 除非你有一个奇怪的浮动大小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读