有人知道这是如何工作的吗?
C程序源:
int main ()
{
float b[] = {1.143139e+27};
puts(b);
return 0;
}
输出:
Fell
为什么这个程序会显示“Fell”?
有人知道这是如何工作的吗?
C程序源:
int main ()
{
float b[] = {1.143139e+27};
puts(b);
return 0;
}
输出:
Fell
为什么这个程序会显示“Fell”?
它与 的字节表示有关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};