| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3456 人关注过本帖
标题:写函数时用double型正确用float型错误,同是小数我很郁闷!
只看楼主 加入收藏
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 6楼 书生牛犊
对啊,这是为啥子啊?我神!
2016-08-29 13:48
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
楼主发的代码调试通不过,不知道是不是原本你的代码就是这样,还是你发上来是和原来的已经不一样了。
一般来说用double接收float,还是float接收float都没有问题,C编译器在处理float类型数据的时候,会自动将其升级为double类型来处理。
I/O还是和格式控制符有关系。
所以,只要你的其它的代码正确,你说的情况是不会出现的。
2016-08-29 14:04
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 12楼 linlulu001
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-08-29 14:11
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 12楼 linlulu001
我用vc6.0编译的,没错的。但是我把函数里的参数换成 float型就是错的,结果周长是‘0’!!!
2016-08-29 14:13
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 14楼 弟大勿勃
明白你的意思了
看看这个
#include<stdio.h>
  #define PI 3.141592
  float circumference(float n)//          这段代码是正确的
 
   {
       return(2*PI*n);
   }
  float area(float n)//
  {
       return(PI*n*n);
   }
  float comp(float x,float (*q)(float x))
   {
       double result;
       result=(*q)(x);
       return(result);
   }
   main()
   {
       float r=3.2,z,y;
      
       z=comp(r,circumference);
       y=comp(r,area);
       printf("circumference=%.3f\n",z);
           printf("area=%.3f\n",y);

   }

[此贴子已经被作者于2016-8-29 14:32编辑过]

2016-08-29 14:25
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:10 
float comp(float x,float (*q)(float x))里的float (*q)(float x)(参数列表要加上)。这里用double和float结果都没问题。其它子函数也要改成相同类型才能正确运行。
我用的编译器有提醒这个错误。
提醒楼主一句,处于学习阶段,最好用类似gcc这样的编译器。


[此贴子已经被作者于2016-8-29 14:45编辑过]

2016-08-29 14:28
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 15楼 ehszt
额,这里的函数指针变量不加参数float x一样能编译成功的。
但是会出现我所说的错误,加上了float参数后就两种数据类型都
可以得到正确值。虽然我知道了问题在哪了,可还是不知道为什么会这样。
2016-08-29 14:56
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 16楼 linlulu001
额,这里的函数指针变量不加参数float x一样能编译成功的。
但是会出现我所说的错误,加上了float参数后就两种数据类型都
可以得到正确值。虽然我知道了问题在哪了,可还是不知道为什么会这样
2016-08-29 14:57
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 17楼 弟大勿勃
float comp(float x,float (*q)(float x))也可以写成float comp(float x,float (*q)(float)),只要声明该指针函数的形参类为float型就可以了。这样
实参才会和形参类型相匹配。
2016-08-29 16:54
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
回复 18楼 弟大勿勃
所以才建议你用gcc这类的编译器。不要用VC。
不要问为什么,采纳不采纳是你的事。我只是好心提醒你而已。
2016-08-29 19:54
快速回复:写函数时用double型正确用float型错误,同是小数我很郁闷!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017835 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved