24小时热门版块排行榜    

查看: 534  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

学化学的笨蛋

金虫 (小有名气)

[交流] 函数问题 已有3人参与

编了这么一个程序,但是运行的结果很奇怪,谁能讨论下吗?:
#include“stdio.h”
int iabs(float x)
{ return(x>0?x:-x);
}
main()
{ float x=-1.2,y;
  y=iabs(2*x);
  printf("x=%f,iabs(x)=%f\n",a,b);
}

运行结果是:x=-1.200000,iabs(x)=2.000000
这个结果不对啊!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lightman_sky

木虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
楼上说得都对,因为你返回的是int,所以得到的2.4就转化为2,而你输出是%f,所以,又会小数点后那么多0.还有,你那个a,b应该是错误的,因为没有定义。你可能打错了,应该是x,y。如果这样都能得到值,那只能说是巧合了。

[ Last edited by lightman_sky on 2012-3-19 at 17:52 ]
4楼2012-03-19 17:47:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

lurencyj

木虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
1. 程序里面没有变量a, b。楼主的程序是编译不过的;
2. return 语句不需要圆括号;
很女子很弓虽大
2楼2012-03-19 01:04:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zxfirst

新虫 (小有名气)

计算机视觉算法

int iabs(float x);这个函数返回结果就是int型的。iabs(x)=2.000000才会出现,而不是iabs(x)=2.400000.
3楼2012-03-19 08:33:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见