C语言程序 为什么此程序的运行结果为 3,5,5,3??我自己分析是5,3,6,2

来源:百度知道 编辑:UC知道 时间:2024/05/25 06:23:56
void fun (int x,int y );
main()
{
int x=5,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}
void fun (int x,int y )
{
x=x+y;
y=x-y;
x=x-y;
printf(“%d,%d,”,x,y);
}

首先你的自定义函数没有返回值 是void的,
所以fun函数只做输出x,y值的作用
那么来分析一下,你给fun函数传递进去 ,5,3
首先赋值运算这,1.x=x+y;x=5+3;x=8;
2.y=x-y;y=8-3;y=5;
3.x=x-y;x=8-5;x=3;
所以输出个 3,5;
既然fun函数没有返回值,所以x,y的值不影响main函数的执行,也就是说main函数中,x,y的值没有被改变
所以输出 5,3

首先fun函数内
x=5 y=3
x=x+y 后 x=8
y=x-y 后 y=5
x=x-y 后 x=3
所以第一组输出是3,5,

至于为什么第二组是5,3,
那是因为你函数使用的是值参 而函数执行完成后 值参的传参方式不改变参数的值

void fun()功能为互换两个数,结果:3,5,
main()调用fun(a,b)后,由于参数传递为值传递,单向传递,结果不能传回主调函数,所以main()内a和b之不变,结果5,3
所以,此程序的运行结果为 3,5,5,3

在这段代码中fun方法(函数,我是学java的,习惯说方法)的功能是将接受收的两个参数的值互换并打印出来,无返回值.

在main方法中调用了fun方法,并把x,y的值传递进去,并打印出来,所以是3,5
而main方法中的x,y的值并没有改变,所以main方法中的printf语句是将x,y的值打印出来,所以是,5,3