在C中翻转双(或浮点)符号的最快方法是什么?
我想,直接访问符号位将是最快的方法,并找到以下内容:
double a = 5.0;
*(__int64*)&a |= 0x8000000000000000;
// a = -5.0
float b = 3.0;
*(int*)&b |= 0x80000000;
// b = -3.0
Run Code Online (Sandbox Code Playgroud)
但是,上述内容不适用于负数:
double a = -5.0;
*(__int64*)&a |= 0x8000000000000000;
// a = -5.0
Run Code Online (Sandbox Code Playgroud)