当前位置:  技术问答>linux和unix

arm-linux-gcc 编译的c代码中atof函数的怪现象

    来源: 互联网  发布时间:2016-06-03

    本文导语:  char str[] = "2.34"; float ft; ft = atof(str); printf("f:%fn", ft); ft = 2.44; printf("f:%fn", ft); 输出:          200000         244000 atof执行后,小数部分丢失了,请高手指点迷津。 还有printf输出的为什么没有小数点? ...


char str[] = "2.34";
float ft;
ft = atof(str);
printf("f:%fn", ft);

ft = 2.44;
printf("f:%fn", ft);

输出:
         200000
        244000

atof执行后,小数部分丢失了,请高手指点迷津。
还有printf输出的为什么没有小数点?

|
楼主有没有include 

我在redhat用gcc编译运行,开始也不对,加上include就正常了
还没想明白为什么

|
猜一下原因,不知道对不对:

如果没有#include ,
C编译器见到一个没有声明的函数,默认地把它当成返回int,然后按整型来处理它的返回值

printf输出的为什么没有小数点,这个就不懂了。
如果同样的代码,在PC上运行正确而在arm上不正确,难道是库函数的实现有问题?

|
对浮点数处理不一样吧。
printf()是不是默认的强制类型转换了?

|
关注,我在我的机器上运行也是 有头文件正确

没有头文件,gcc可以编译通过,但是函数atof得出的值不正确

望高手解答,问什么不加头文件也能编译通过?

|
很多编译器都是这样处理的,没有函数声明默认返回值类型为int。 
不同的编译器处理方式不一样,有的严格,有的比较松。

|


补充::::推测应该是因为标准库有相同的函数名不同的代码所致

|

|

这可就想不通了……
虽然这不象好主意,还是想建议楼主自己加个声明float(或double) atof(char*);
看看有没有效果。如果可以,加这个声明的时候最好把stdlib.h再去掉
或者可以这样,编译的时候加上-Wall选项,看看有没有针对atof声明的警告
可能我的思路已经被限制住了,钻到函数声明的牛角尖里出不来了……

printf丢小数点的问题,彻底不懂
最后的一招就是不用%f,自己写个函数,比如
print_float(float f)
{
    printf("%d.", (int)f);
    printf("%d", (int)((f-(int)f)*100000));
}

楼主还可以考虑去C/C++版再问问

|


正解。

|
include  
我也遇到过这个问题

    
 
 

您可能感兴趣的文章:

  • arm-linux-gcc交叉编译出错,但gcc编译没错,什么原因呢???
  • arm-linux-gcc编译JM的问题求教
  • arm-linux-gcc交叉编译工具链安装
  • gcc与arm-linux-gcc编译的问题???
  • arm-linux-gcc交叉编译问题
  • 高分相送,如何更改Autoconf和Automake使其被arm-linux-gcc编译
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 使用arm-linux-gcc编译,出现compilation of header file requested错误
  • arm-linux-gcc 编译时加载<math.h>动态链接库的问题
  • 使用eclipse 加入arm-elf-gcc 或arm-linux-gcc 编译器为什么不好使
  • arm-linux-gcc编译XML错误
  • 求助arm-linux-gcc-3.4.1 如何交叉编译具有两个依赖库的文件?
  • 高手帮忙啊!linux中用arm-linux-gcc编译生成的二进制文件怎么复制到开发板里?
  • statfs函数在用arm-linux-gcc编译后?
  • arm-linux-gcc交叉编译出错
  • RED hat 下 arm-linux-gcc (2.95.3)编译 u-boot-1.1.6错误!!!!
  • 请教使用arm-linux-gcc 3.4.1 如何交叉编译linux 2.6的内核模块?
  • arm-linux-gcc 交叉编译poco-1.3.5-all 报错stlport_arm_linux_gcc库找不到
  • 请教arm-linux-gcc交叉编译的一个 错误
  • gcc编译成功,arm-linux-gcc编译报错,请高手指教!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 安装arm-linux-gcc出错
  • arm-linux-gcc 怎么卸载?
  • arm-linux-gcc 卸载?
  • ADS和arm-linux-gcc
  • arm-linux-gcc 2.95.3 不认识
  • arm-linux-gcc 怎么来的?
  • arm-linux-gcc 求助
  • arm-linux-gcc不能识别-02选项?
  • linux下面设置arm-linux-gcc路径的问题
  • arm-linux-gcc 在哪下载比较好,历史版本比较齐?
  • arm-linux-gcc问题
  • arm-linux-gcc 对齐问题
  • arm-elf-gcc 和 arm-linux-gcc有什么区别?arm-elf-gcc里的elf代表什么?
  • arm-linux-Gcc 安装不成功
  • 疑惑softfloat的问题,并求arm-linux-gcc和arm-linux-softfloat-gcc4.1.1
  • arm-linux-gcc的连接问题
  • 【求助】怎么把GCC库转化为arm-linux-gcc的库啊


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3