求高人解释下面该C语言程序,并说出得出此结果的由来
发布网友
发布时间:2022-02-28 23:51
我来回答
共2个回答
热心网友
时间:2022-03-01 01:20
1 运行结果如下:
1, 3, 2
2 分析:
#include <stdio.h>
void foo(int *a,int *b) //函数的功能是交换a,b所指对象的值。
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
void main()
{
int a=1,b=2,c=3;
foo(&a,&b); //交换a,b的值,a,,b,c的值分别为2,1,3。
foo(&b,&c); //交换b,c的值,a,,b,c的值分别为2,3,1。
foo(&c,&a); //交换c,a的值,a,,b,c的值分别为1,3,2。
printf("%d, %d, %d ",a,b,c);
}
热心网友
时间:2022-03-01 02:38
返回结果1, 3, 2.
foo函数也就是实现参数中a与b的值对换而已,这个算法算是有点巧妙。
首先把a与b的和放到a当中,然后把a-b的值,其实就是原来(a+b)-b的值赋值给b,然后把a-b,也就是原来(a+b)-a的值赋值给a,这样就实现了a与b的值的互换。