C 语言类问题

今天在使用标准库函数atof时遇到以下问题:

不管atof(x)的内容x是什么,转换出来的的数总是0.000

如下两段程序

Code1

#include #include int main(void){ char *temp = "074.2030"; printf("%.4f\r\n",atof(temp)); return 1;}

Code2

#include int main(void) { char *temp = "074.2030"; printf("%.4f\r\n",atof(temp)); return 1; }

这两段的运行结果是不一样的,如下所示

./Code174.2030./Code20.0000

造成这种情况的原因就是Code2没有包含头文件stdlib.h,在编译时没有报错,但是会有一个warning,如下

warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat=] printf("%.4f\r\n",atof(temp));

如上,在没有包含头文件时,atof的结果是被当做int型处理的,所以造成了最后的转换结果不正确,这种情况对atoi没有影响,所以在使用库函数时要查明对应的声明头文件,否则会造成意想不到的错误。

查看原文 >>
相关文章