相关疑难解决方法(0)

陷阱表示

  1. 什么是C中的陷阱表示(某些示例可能有帮助)?这适用于C++吗?

    float f=3.5;
    int *pi = (int*)&f;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑:我知道'pi'违反了别名规则,根据C标准它是UB.至少在海湾合作委员会它没有产生任何错误,但警告.在这个实现(即GCC)中,假设sizeof(int) == sizeof(float)do f和*pi具有相同的二进制表示/模式?MSVC怎么样?

c c++ gcc visual-studio-2010

63
推荐指数
3
解决办法
1万
查看次数

在 C++ 中进行类型双关的现代正确方法是什么?

似乎有两种类型的 C++。实用C++和语言律师C++。在某些情况下,能够将一种类型的位模式解释为一种不同的类型会很有用。浮点技巧就是一个显着的例子。让我们取著名的快速平方根反比(取自Wikipedia,又取自此处):

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;                       // evil floating point bit level hacking
    i  = 0x5f3759df - ( i >> 1 );               // what the
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) ); …
Run Code Online (Sandbox Code Playgroud)

c++ performance casting language-lawyer type-punning

35
推荐指数
2
解决办法
1315
查看次数

将双数字的64位二进制字符串表示形式转换回c ++中的双数字

我有一个双数的IEEE754双精度64位二进制字符串表示.示例:double value = 0.999; 其二进制表示为"0011111111101111111101111100111011011001000101101000011100101011"

我想将此字符串转换回c ++中的双精度数.我不想使用任何外部库或.dll,因为我的程序可以在任何平台上运行.

c++

7
推荐指数
1
解决办法
3233
查看次数

Java的Float.floatToIntBits实现代码在C\C++中

我想要C/C++中java的Float.floatToIntBits()实现代码的源代码.

c c++

1
推荐指数
1
解决办法
1743
查看次数