微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用memcpy避免陷阱表示

请考虑以下代码
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.

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

原文地址:https://www.jb51.cc/c/114547.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐