搜索

求高人解释下面该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的值的互换。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top