为什么strof不打印正确的浮点? #包括 #包括 #包括 int main(){ 字符aaa[35]=“1.25”; char*bbb=&(aaa[0]); 字符**ccc=&(bbb); 浮点数a=strtof(*ccc,ccc); printf(“%f\n”,a); 返回0; }
我上面写的代码应该打印为什么strof不打印正确的浮点? #包括 #包括 #包括 int main(){ 字符aaa[35]=“1.25”; char*bbb=&(aaa[0]); 字符**ccc=&(bbb); 浮点数a=strtof(*ccc,ccc); printf(“%f\n”,a); 返回0; },c,floating-point-conversion,C,Floating Point Conversion,我上面写的代码应该打印1.25,但根据codepad(在线C编译器),它不会打印1.25。在代码板上,它打印2097152.000000。这是我的建议 我做错了什么?codepad有一个旧版本的gcc,大概是标准C库。显然,strof不是由您包含的头文件声明的。(strof已添加到C99中。) 尝试使用带有后稀释剂版本gcc的在线服务。或显式添加正确的声明: #include <stdio.h> #include <stdlib.h> #include <strin
1.25
,但根据codepad(在线C编译器),它不会打印1.25
。在代码板上,它打印2097152.000000
。这是我的建议
我做错了什么?codepad有一个旧版本的gcc,大概是标准C库。显然,
strof
不是由您包含的头文件声明的。(strof
已添加到C99中。)
尝试使用带有后稀释剂版本gcc的在线服务。或显式添加正确的声明:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char aaa[35] = "1.25";
char* bbb = &(aaa[0]);
char** ccc = &(bbb);
float a = strtof(*ccc, ccc);
printf("%f\n", a);
return 0;
}
如果没有声明,编译器会将函数的返回类型默认为int
。由于函数实际上返回一个浮点,所以浮点被解释为(未转换为)整数,然后该整数被转换为浮点
不会产生任何警告,可能是因为编译器选项中没有-Wall,和/或使用的C标准允许使用未声明的函数。它会打印什么?当上面的代码被编译并运行时,我在ideone上没有打印1.25所以你得到了什么输出?你上面的代码板链接没有链接到编译器output@ArunA.S:是的。你认为我夸大了太多吗?已经八年了。
float strtof(const char* ptr, char** end_ptr);