C语言函数中能否有两个return?

int f(int a,int b)
{
int c,d;
c = a + b;
d = a - b;
return(c); //能否这样写两个return???
return(d);
}
main()
{
int a = 5;
int b = 3;
printf("%d,%d",f(a,b)); //结果第一个值对,第二个值为0???
}

函数里是否能写两个return?怎样才能同时输出c和d的值?

不能,函数的返回值只能有一个,所以程序执行到第一个return就直接跳出,没有执行return d;可以使用指针,a,b为入口参数,c,d为出口参数,这样就可以解决多个返回值的问题,希望能帮到你。
#include <stdio.h>
void f(int a,int b,int *c,int *d)
{

*c = a + b;
*d = a - b;

}
int main()
{
int a = 5;
int b = 3;
int c=0,d=0;
f(a,b,&c,&d);
printf("%d %d",c,d);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-27
C语言函数不能两个值,不过有变通的办法,如下:
void f(int a,int b, int &c, int &d)
{
c = a + b;
d = a - b;
}

main()
{
int a = 5;
int b = 3;
int c,d;
f(a,b,c,d);
printf("%d,%d", c, d);
}
楼主参考。
第2个回答  2010-12-27
函数中不能一次返回两个值。就是同时return 两个数据。

你可以将a,b的地址传入,这样在f函数中也能改变a,b的值了。
#include<stdio.h>
void f(int &a,int &b)
{
int c,d;
c = a + b;
d = a - b;
a=c;
b=d;
}
void main()
{
int a = 5;
int b = 3;
f(a,b);
printf("%d,%d",a,b);
}
第3个回答  2010-12-27
只有第一个return有效;
可以定义struct返回型;本回答被网友采纳
相似回答