黑马程序员技术交流社区

标题: 高手帮忙看看这个面试题 [打印本页]

作者: 张龙欢    时间: 2013-5-16 21:32
标题: 高手帮忙看看这个面试题
本帖最后由 张龙欢 于 2013-5-18 16:48 编辑

今天看到一个面试题:定义两个变量,如何用一行代码来实现,交换两个变量的值!
作者: 袁梦希    时间: 2013-5-16 21:38
楼主是指用一条语句交换两个变量的值   还是用一行代码定义两个变量,然后再交换两个变量的值?
作者: 壹旪傾峸    时间: 2013-5-16 21:40
额 你好问题同上
作者: Jacky_Chen1990    时间: 2013-5-16 21:43
定义变量a 和b 然后
a=a - ( b = ( a = a + b ) - b);

其实就是将两行代码合并成一行。
作者: 神之梦    时间: 2013-5-16 21:43
一行代码实现交换,估计只能用java提供的工具吧
作者: 曾大鹏    时间: 2013-5-16 21:46
本帖最后由 曾大鹏 于 2013-5-16 21:52 编辑

应该是不用第三个变量 来交换两个变量的值
  1. //定义两个变量a,b分别赋值10,5
  2.             int a = 10;
  3.             int b = 5;

  4.             a = a + b;//a=a+初始的b;
  5.             b = a - b;//这时候b=a-初始的b=a+b-b=a;即改变后的b=初始的a;
  6.             a = a - b;
  7.             /*这时候a=a-b=a+初始的b-改变后的b     
  8.             =a+b-初始的a=b;*/

  9.             Console.WriteLine("{0},{1}",a,b);
  10.             Console.ReadKey();
  11.             //一行可以这样写,其实就是把上面的合在一起而已
  12.             a = a - (b = (a = a + b) - b);
复制代码

作者: chouwayメ    时间: 2013-5-16 21:57
呵貌似这样可以哦
  1. int a =1;
  2. int b=2;
  3. a=b+(b=a)*0;
复制代码

作者: 张龙欢    时间: 2013-5-16 23:22
袁梦希 发表于 2013-5-16 21:38
楼主是指用一条语句交换两个变量的值   还是用一行代码定义两个变量,然后再交换两个变量的值? ...

是一条语句交换两个变量的值
作者: lingziye2011    时间: 2013-5-17 01:10
int a=10;
int b=20;
b=a+(a=b)-b;
作者: chouwayメ    时间: 2013-5-17 01:30
曾大鹏 发表于 2013-5-16 21:46
应该是不用第三个变量 来交换两个变量的值

这样可以互换A、B??
  1. int A=0,B=10;
  2.      A = A - (B = (A = A + B) - B);
  3.      System.out.println(A);
  4.      System.out.println(B);
复制代码

作者: 紫衣侯    时间: 2013-5-17 23:08
什么类型变量{:soso_e151:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2