linux - 在两个不同的 Linux 操作系统上获得 pow() 函数的两个不同结果

标签 linux ubuntu debian pow zynq

这是我的代码

#include<stdio.h>
#include<math.h>

void main(void)
{
    printf("pow as double: %lf\n\r", pow(2,32));
    printf("pow as long int: %ld\n\r", ((long int)pow(2,32)));
}

我在 2 个不同的 Linux 操作系统上编译了代码。 (gcc powfn.c -o powfn)

在 VirtualBox Ubuntu 上,我得到了以下结果

pow as double: 4294967296.000000  
pow as long int: 4294967296

在 Znyq ARM Cortex A9 处理器上运行的 Debian GNU/Linux 8 操作系统上,我得到以下结果

pow as double: 4294967296.000000
pow as long int: 2147483647  

这是怎么回事?为什么会有两种不同的结果?

最佳答案

对于相同的数据类型,这两个处理器很可能具有不同的大小。您可以通过在两台机器上编译和运行这段代码来测试它:

#include <stdio.h>
int main()
{
    int integerType;
    long int longIntType;
    float floatType;
    double doubleType;
    char charType;

    // Sizeof operator is used to evaluate the size of a variable
    printf("Size of int: %ld bytes\n",sizeof(integerType));
    printf("Size of long int: %ld bytes\n",sizeof(longIntType));
    printf("Size of float: %ld bytes\n",sizeof(floatType));
    printf("Size of double: %ld bytes\n",sizeof(doubleType));
    printf("Size of char: %ld byte\n",sizeof(charType));

    return 0;
}

这是在 Wandboard with Cortex-A9 上运行程序的结果和 Ubuntu 15.10:

wandboard:~$ ./test.exe
Size of int: 4 bytes
Size of long int: 4 bytes
Size of float: 4 bytes
Size of double: 8 bytes
Size of char: 1 byte

关于linux - 在两个不同的 Linux 操作系统上获得 pow() 函数的两个不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44451743/

相关文章:

linux - 在 Motif 中构建长滚动按钮小部件列表的正确方法是什么?

mysql - MariaDB 不在 Ubuntu 15.04 上检查密码

ubuntu - 使用 mupx 将 meteor 部署到 AWS ubuntu 时出现错误跟踪

linux - Linux有时会检测到声卡

performance - Linux - HTPASSWD 文件太大? (超过2000个用户)

Linux SLE11 SPC3 邮件::IMAPClient

linux - 如果 Ubuntu 18.04 上安装了两个 Perl 版本,如何将新的 Perl 版本设置为默认版本?

linux - AWS 主管 spawnerr : can't find command on Ubuntu

python - 为 python3.7 Ubuntu 18.04 安装 pandas

python - 在 Debian wheezy 上安装 python3-networkx