文章目录
  1. 1. 总结:这个技巧只能用来应付面试,实际中不会用的!!
  • 惯常的交换两个数的方法:
    int tmp;
    tmp = a;
    a = b;
    b = tmp;
  • 但是,不知从什么时候开始,有人发明了不使用临时变量交换两个数字的方法,
    具体如下:
    b = a^b;
    a = a^b;
    b = a^b;
    有人认为这样可以少用一个变量,节省一个字节的空间,会让程序运行的更快,其实不然
  1. 这个所谓的技巧,会使电脑运行更慢,原始的办法是两次内存的读写,而这个技巧是
    六读三写加三次异或。
  2. 同样也不能节省内存,因为中间变量tmp通常会是寄存器。就算它在函数的局部堆栈上,
    反正stack已经开在那里了,也没有进一步的函数调用,根本节约不了内存。
  3. 相反,由于计算步骤较多,会使用很多的指令。
  4. 另外有隐患,如果a,b指向同一个数,那么执行之后,会变为0。

总结:这个技巧只能用来应付面试,实际中不会用的!!

注:本文是个人笔记,参考了陈硕的《Linux多线程编程》第12章的内容。

文章目录
  1. 1. 总结:这个技巧只能用来应付面试,实际中不会用的!!