return 用法

陆歆雨 2013-08-07 11:45:18
#include<stdio.h>

int main()
{
int sign(double a);
double x;
scanf("%f",&x);
printf("sign=%d\n",sign(x));

}
int sign(double a)
{
if (a<0)
return(-1);
else return((a==0)?0:1);
}
//为何输入任何的数都是sign=1?
...全文
154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵狗 2013-08-07
  • 打赏
  • 举报
回复

#include<stdio.h>

#define EPS     (1e-6)

int sign(double a);

int main()
{
double x;
scanf("%lf",&x);
printf("sign=%d\n",sign(x));

}

int sign(double a)
{
if(a<-EPS)
return(-1);
if(a>EPS)
return 1;
return 0;
}
引用 楼主 u011603569 的回复:
#include<stdio.h> int main() { int sign(double a); double x; scanf("%f",&x); printf("sign=%d\n",sign(x)); } int sign(double a) { if (a<0) return(-1); else return((a==0)?0:1); } //为何输入任何的数都是sign=1?
mujiok2003 2013-08-07
  • 打赏
  • 举报
回复
引用 1 楼 lin5161678 的回复:
因为 scanf %lf 才是 double
en.
lin5161678 2013-08-07
  • 打赏
  • 举报
回复
最后 对浮点数 进行判断 最好能有一个误差控制 一般不会直接用 ==
lin5161678 2013-08-07
  • 打赏
  • 举报
回复
另外说一点 == 运算符 求值的结果就是int类型的0 或者是1 你的三元运算符用法得很差劲 直接 a == 0
mujiok2003 2013-08-07
  • 打赏
  • 举报
回复
判断浮点数相等不能用==

int  sign(double a)
 {
 if (a<0)
 return(-1);
 else if( a > 0) return 1;
 else return 0;
 }
lin5161678 2013-08-07
  • 打赏
  • 举报
回复
因为 scanf %lf 才是 double
nevedliu 2013-08-07
  • 打赏
  • 举报
回复
这么写调用函数时有警告吧....
赵4老师 2013-08-07
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧