小编Mat*_*tto的帖子

在 Win32 上双转换为 unsigned int 被截断为 2,147,483,648

编译以下代码:

double getDouble()
{
    double value = 2147483649.0;
    return value;
}

int main()
{
     printf("INT_MAX: %u\n", INT_MAX);
     printf("UINT_MAX: %u\n", UINT_MAX);

     printf("Double value: %f\n", getDouble());
     printf("Direct cast value: %u\n", (unsigned int) getDouble());
     double d = getDouble();
     printf("Indirect cast value: %u\n", (unsigned int) d);

     return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出 (MSVC x86):

INT_MAX: 2147483647
UINT_MAX: 4294967295
Double value: 2147483649.000000
Direct cast value: 2147483648
Indirect cast value: 2147483649
Run Code Online (Sandbox Code Playgroud)

输出 (MSVC x64):

INT_MAX: 2147483647
UINT_MAX: 4294967295
Double value: 2147483649.000000
Direct cast value: 2147483649
Indirect cast value: …
Run Code Online (Sandbox Code Playgroud)

c floating-point x86 casting visual-c++

85
推荐指数
3
解决办法
4462
查看次数

修改编译共享库中符号的可见性

我的项目依赖于一个第三方库,该库导出了更多应有的符号。其中一些符号被其他库和主程序无意地覆盖。

如何更改已编译共享对象的函数和变量的可见性?

visibility shared-libraries elf

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