-2

有人知道这是如何工作的吗?

C程序源:

int main ()
{
    float b[] = {1.143139e+27};
    puts(b);

    return 0;
}

输出:

Fell

为什么这个程序会显示“Fell”?

4

1 回答 1

6

它与 的字节表示有关1.143139e+27,它恰好是Fell,但没有终止nul字节。

你可以做相反的过程,比如

#include <stdio.h>

int main()
{
    char b[] = {'F', 'e', 'l', 'l'};
    fprintf(stdout, "%g\n", *(float *)b);

    return 0;
}

甚至添加一个终止nul字节,

#include <stdio.h>

int main()
{
    char b[] = {'F', 'e', 'l', 'l', '\0'};
    fprintf(stdout, "%g\n", *(float *)b);

    return 0;
}

这意味着将 , 更改float b[] = {1.143139e+27};float b[] = {1.14314e+27};

于 2015-05-24T01:37:36.390 回答