C语言中,怎样不用中间变量而互换两个变量的值呢?
12个回答
展开全部
对于整数的确可以像楼上几个同学说的进行交换,但是这只是对于整数这个特殊情况,对于一般意义的量,比如指针类型,除非深入了解各种变量的计算机内部表示,否则只能通过中间变量来交换两个变量的值。而且从效率的角度来说,通过一个中间变量交换只是增加了一个空间开销,即使是两个整数交换的情况,通过中间变量交换也是最明智的选择,因为对整数交换的特殊方法只能注定程序的运行效率不高。
这个问题提的有想法。但是事实是目前我们实现交换两个变量的最好方法就是通过一个中间变量,虽然对于某些变量有些特殊的技巧使它们不通过中间变量实现,但是运算量大,代价远不如通过中间变量。
这个问题提的有想法。但是事实是目前我们实现交换两个变量的最好方法就是通过一个中间变量,虽然对于某些变量有些特殊的技巧使它们不通过中间变量实现,但是运算量大,代价远不如通过中间变量。
参考资料: 《C程序设计语言》《深入理解计算机系统》
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有两种方式可以不使用中间变量,交换同类型的变量a,b的值:
1 使用加法操作。
a+=b;
b=a-b;
a -= b;
2 使用异或操作:
a^=b;
b^=a;
a^=b;
1 使用加法操作。
a+=b;
b=a-b;
a -= b;
2 使用异或操作:
a^=b;
b^=a;
a^=b;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我来告诉你 ,可以这样设计
假如有A=1,B=2;
然后想交换值,为
A=B;
B=A;
即可
假如有A=1,B=2;
然后想交换值,为
A=B;
B=A;
即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如说:
a b
a = a+b;
b = a-b;
a = a-b;
例如:
a=5,b=3;
a = a+b =8;
b = a -b = 8-3 = 5;
a = a-b = 8 -5 =3
a b
a = a+b;
b = a-b;
a = a-b;
例如:
a=5,b=3;
a = a+b =8;
b = a -b = 8-3 = 5;
a = a-b = 8 -5 =3
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |