C语言的高手来回答我吧,我是初学者

来源:百度知道 编辑:UC知道 时间:2024/04/30 03:25:48
#include<stdio.h>
void main()
{
int ifirst=0,issecond=0,itmp=0;
printf("Please input two number(a,b)\n");
scanf("%d%d",&ifirst,&isecond);
printf("ifirst=%d,isecond=%d\n",ifirst,isecond);
itmp=ifirst;
ifirst=isecond;
isecond=itmp;
printf("ifirst=%d,isecond=%d\n",ifirst,isecond);
}
1、为什么交换两个变量的值要用三个语句,而不能直接交换呢?
2、如果是用复合语句,又有什么不一样呢?请举例说明

如果直接交换 那么赋值号左边的变量原有的值就被覆盖了,替换成了赋值号右边变量的值

那么赋值号左边变量的原有的值就没有了,还何谈交换呢

所以要一个中间变量搭桥,让这个变量记录首先要被覆盖的变量的值,这样就能实现交换了

你第二个问题我没明白。。

有一行交换2个整形变量的方法
ifirst^=isecond^=ifirst^=isecond
这样就把2个变量交换了

举个例子方便你理解:
有两个碗一个碗装满酒另一个装满水,要想把碗里面的东西交换,就必须要有一个中间变量,也就是说需要有第三个碗,才能交换碗里的东西,不知你是否明白!

写个交换的函数:
void swap(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
以后就可以直接调用了,主意调用的时候传递的是指针。
如swap(&a,&b);

1.因为直接的话会把原来的覆盖掉的
比如
a=1,b=6,如果用a=b,b=a的话
本来a 的值是1,a=b后a的值是6,1就被覆盖了
再用b=a,b的值是也是6