小编biz*_*aff的帖子

如何通过其他类型重新解释数据?(打字混淆)

#include <iostream>

int main(int argc, char * argv[])
{
    int a = 0x3f800000;

    std::cout << a << std::endl;

    static_assert(sizeof(float) == sizeof(int), "Oops");

    float f2 = *reinterpret_cast<float *>(&a);

    std::cout << f2 << std::endl;

    void * p = &a;
    float * pf = static_cast<float *>(p);
    float f3 = *pf;

    std::cout << f3 << std::endl;

    float f4 = *static_cast<float *>(static_cast<void *>(&a));

    std::cout << f4 << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我从可靠的编译器中获得以下信息:

me@Mint-VM ~/projects $ g++-5.3.0 -std=c++11 -o pun pun.cpp -fstrict-aliasing -Wall
pun.cpp: In function ‘int main(int, …
Run Code Online (Sandbox Code Playgroud)

c++ strict-aliasing

4
推荐指数
2
解决办法
296
查看次数

标签 统计

c++ ×1

strict-aliasing ×1