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

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

【问题描述】:给定两个整形变量,然后交换两个变量的值。

【程序设计】:

        方式一:定义一个临时变量tmp,然后根据临时变量交换两个变量的值。

【C语言初阶】:经典面试题之交换两个整形变量的值
  方式二:不设立临时变量,用加法操作交换两个变量的值(也可以用乘法,原理一样,这里就不多赘述)。

【C语言初阶】:经典面试题之交换两个整形变量的值
       方式三:用异或运算交换两个变量的值。*(异或简单来说就是相同取0,不同取1) 

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

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

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