gpt4 book ai didi

c - atof() 返回不明确的值

转载 作者:太空狗 更新时间:2023-10-29 15:14:57 27 4
gpt4 key购买 nike

我正在尝试使用 atof 在 c 语言中将字符数组转换为 double 组并接收不明确的输出。

printf("%lf\n",atof("5"));

打印

262144.000000

我惊呆了。有人可以解释我哪里出错了吗?

最佳答案

确保您已经包含了 atof 和 printf 的 header 。如果没有原型(prototype),编译器将假定它们返回 int 值。当发生这种情况时,结果是未定义的,因为这与 atof 的实际返回类型 double 不匹配。

#include <stdio.h>
#include <stdlib.h>

没有原型(prototype)

$ cat test.c
int main(void)
{
printf("%lf\n", atof("5"));
return 0;
}

$ gcc -Wall -o test test.c
test.c: In function ‘main’:
test.c:3:5: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
test.c:3:5: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
test.c:3:5: warning: implicit declaration of function ‘atof’ [-Wimplicit-function-declaration]
test.c:3:5: warning: format ‘%lf’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat]

$ ./test
0.000000

原型(prototype)

$ cat test.c
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
printf("%lf\n", atof("5"));
return 0;
}

$ gcc -Wall -o test test.c

$ ./test
5.000000

教训:注意编译器的警告。

关于c - atof() 返回不明确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com