Gra*_*ler -2 c arrays floating-point return puts
有谁知道这是如何工作的?
C程序来源:
int main ()
{
float b[] = {1.143139e+27};
puts(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Fell
Run Code Online (Sandbox Code Playgroud)
为什么这个节目会显示"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;
}
Run Code Online (Sandbox Code Playgroud)
甚至添加一个终止nul字节,
#include <stdio.h>
int main()
{
char b[] = {'F', 'e', 'l', 'l', '\0'};
fprintf(stdout, "%g\n", *(float *)b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这意味着改变float b[] = {1.143139e+27};,到float b[] = {1.14314e+27};