当我不包含stdlib.h的时候使用atof()函数不报错,可以运行,但是得到的是错误的结果
#include <stdio.h>
#include <string.h>
void main()
{
char *a = "-100.23";
float m = atof(a);
printf("a = %.3f\n",m );
}
运行结果为a=0.000
但是用atoi()的时候就好像没问题
#include <stdio.h>
#include <string.h>
void main()
{
char *a = "-100.23";
int m = atoi(a);
printf("a = %d\n",m );
}
运行结果为运行结果为a=-100。
包含了stdlib.h后就都是对的。
请问这是为什么?
是因为包含的 stdio.h 和 string.h 这两个包含文件间接地包含了这两个函数的声明吗,如果是这样的话为什么atof()不对而atoi()是对的呢?如果不是这样那是什么原因呢?
目前我还未找到原因,如果大家有知道的话请赐教。在此记录一下这个问题,如果解决了就会第一时间来更新。