【C语言】经典面试题之交换两个整形变量的值

题目

给定两个整形变量,然后交换两个变量的值。

方式一:定义一个临时变量tmp,然后根据临时变量交换两个变量的值
这里写图片描述
方式二:不设立临时变量,用加法操作交换两个变量的值(易造成栈溢出)*
这里写图片描述
方式三:用异或运算交换两个变量的值。(异或就是相同取0,不同取1) *
这里写图片描述

异或运算基于以下几个性质:

  • 任意变量x与自身异或结果为0,即:x^x = 0
  • 任意变量x与0进行异或运算,结果不变,即:x^0 = x
  • 异或运算的结合性:a^b^c = (a^b)^c = a^(b^c)
  • 异或运算的交换性:a^b = b^a