C语言问题,高手帮我解决下啊,谢谢拉

下面是一个计算方程根的函数:
int root(double a,double b,double c,double *x1,double *x2)
{
double d;
do=b*b-4*a*c;
if(d>=0){
*x1=(-b+sqrt(d))/(2*a);
*x2=(-b-sqrt(d))/(2*a);
return 1
}
else return 0
}
这个函数是分两种情况有两种返回值,不过我见过另一个函数(实在找不到原函数了),也是两种情况两个返回值的,不过却没有else,我记得那个程序我们老师强调了不能用else的,用了的话就会两个返回值都被输出。我想请问下什么时候才不能用else?
晕,看来我的表达能力不行......上面那个程序是没有问题的,我的疑问是为什么这个就能加ELSE,而另一个(我忘了原程序了)不行

int root(double a,double b,double c,double *x1,double *x2)
{
double d;
do=b*b-4*a*c;
if(d>=0){
*x1=(-b+sqrt(d))/(2*a);
*x2=(-b-sqrt(d))/(2*a);
return 1;
}
return 0;
}
直接把else去掉就可以,两个return不可能同时返回的,当d>=0时,return 1;就从当前函数返回了,后面的return 0;就不会执行了.若d<0,则不执行return 1;接着往下执行自然会执行到下面的return 0.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-19
哦,终于看明白你说什么了。
。。。。。。
由于函数有返回值,
加了个else,编译器就以为没有返回值了,
会报错。^_^!
第2个回答  2008-06-19
楼上的话 看不明白
if else 成对出现,当代表两种不同结果时。

if(d>=0){……]
else ……
没有错啊!!