用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.

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...